diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index 351a85fd4..b1ddc0ac4 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -106,7 +106,6 @@ public class Compiler { private Program pass1GenerateSSA() { - new Pass1FixLvalueLoHi(program).execute(); new Pass1TypeInference(program).execute(); getLog().append("PROGRAM"); getLog().append(program.getStatementSequence().toString(program)); @@ -114,6 +113,8 @@ public class Compiler { getLog().append(program.getScope().getSymbolTableContents(program)); new Pass1GenerateControlFlowGraph(program).execute(); + new Pass1FixLValuesLoHi(program).execute(); + new Pass1AssertNoLValueIntermediate(program).execute(); new Pass1AddTypePromotions(program).execute(); getLog().append("INITIAL CONTROL FLOW GRAPH"); diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java index d9c2779e4..fdc9c1f69 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentManager.java @@ -89,9 +89,18 @@ public class AsmFragmentManager { Map mapZ = new LinkedHashMap<>(); mapZ.put("z2", "z1"); mapZ.put("z3", "z2"); - Map mapConst = new LinkedHashMap<>(); - mapConst.put("c2", "c1"); - mapConst.put("c3", "c2"); + Map mapZ2 = new LinkedHashMap<>(); + mapZ2.put("z3", "z1"); + Map mapZ3 = new LinkedHashMap<>(); + mapZ3.put("z3", "z2"); + Map mapC = new LinkedHashMap<>(); + mapC.put("c2", "c1"); + mapC.put("c3", "c2"); + Map mapC3 = new LinkedHashMap<>(); + mapC3.put("c3", "c2"); + Map mapZC = new LinkedHashMap<>(); + mapZC.putAll(mapZ); + mapZC.putAll(mapC); Map mapSToU = new LinkedHashMap<>(); mapSToU.put("vbsz1", "vbuz1"); mapSToU.put("vbsz2", "vbuz2"); @@ -124,9 +133,14 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("vbsyy=(.*)", null, null, "vbsaa=$1", "tay\n", null)); synths.add(new FragmentSynthesis("vbuz1=(.*)", ".*=.*vb.z1.*", null, "vbuaa=$1", "sta {z1}\n", mapZ)); synths.add(new FragmentSynthesis("vbsz1=(.*)", ".*=.*vb.z1.*", null, "vbsaa=$1", "sta {z1}\n", mapZ)); - synths.add(new FragmentSynthesis("_deref_vwuc1=(.*)", null, null, "vbuaa=$1", "sta {c1}\n", mapConst)); + synths.add(new FragmentSynthesis("_deref_vwuc1=(.*)", null, null, "vbuaa=$1", "sta {c1}\n", mapC)); synths.add(new FragmentSynthesis("_deref_pbuz1=(.*)", ".*=.*z1.*", null, "vbuaa=$1", "ldy #0\n" + "sta ({z1}),y\n", mapZ)); - synths.add(new FragmentSynthesis("vwuc1_derefidx_vbuz1=(.*)", null, null, "vbuaa=$1", "ldx {z1}\n"+"sta {c1},x\n", mapZ)); + + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*)", ".*z1.*z1.*|.*c1.*c1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZC)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuz1=(.*c1.*)", ".*z1.*z1.*", null, "vb$1aa=$2", "ldx {z1}\n"+"sta {c1},x\n", mapZ)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuyy=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},y\n", mapC)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuxx=(.*)", ".*c1.*c1.*", null, "vb$1aa=$2", "sta {c1},x\n", mapC)); + synths.add(new FragmentSynthesis("pb(.)z1_derefidx_vbuz2=(.*)", ".*z1.*z1.*|.*z2.*z2.*", null, "vb$1aa=$2", "ldy {z2}\n"+"sta ({z1}),y\n", mapZ2)); synths.add(new FragmentSynthesis("(.*)=vbuxx(.*)", ".*=.*vb.aa.*", "txa\n", "$1=vbuaa$2", null, null)); synths.add(new FragmentSynthesis("(.*)=vbuyy(.*)", ".*=.*vb.aa.*", "tya\n", "$1=vbuaa$2", null, null)); @@ -136,11 +150,39 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("(.*)=vbsz2(.*)", ".*=.*vb.aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}\n", "$1=vbsaa$2", null, null)); synths.add(new FragmentSynthesis("(.*)=vbuz2", ".*=.*aa.*|.*z2.*=.*", "lda {z2}\n", "$1=vbuaa", null, null)); synths.add(new FragmentSynthesis("(.*)=vbsz2", ".*=.*aa.*|.*z2.*=.*", "lda {z2}\n", "$1=vbuaa", null, null)); - synths.add(new FragmentSynthesis("(.*)=vbuc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbuaa", null, mapConst)); - synths.add(new FragmentSynthesis("(.*)=vbsc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbsaa", null, mapConst)); - synths.add(new FragmentSynthesis("(.*)=_deref_vwuc1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vbuaa$2", null, mapConst)); + synths.add(new FragmentSynthesis("(.*)=vbuc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbuaa", null, mapC)); + synths.add(new FragmentSynthesis("(.*)=vbsc1", ".*=.*aa.*", "lda #{c1}\n", "$1=vbsaa", null, mapC)); + synths.add(new FragmentSynthesis("(.*)=_deref_vwuc1(.*)", ".*=.*aa.*", "lda {c1}\n", "$1=vbuaa$2", null, mapC)); synths.add(new FragmentSynthesis("(.*)=_deref_pb(.)z1(.*)", ".*z1.*z1.*|.*=.*aa.*|.*=.*yy.*", "ldy #0\n" + "lda ({z1}),y\n", "$1=vb$2aa$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*)", ".*=.*aa.*|.*c1.*c1.*", "lda {c1},x\n", "$1=$2vb$3aa$4", null, mapC)); + synths.add(new FragmentSynthesis("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuxx(.*)", ".*=.*aa.*", "lda {c1},x\n", "$1=$2vb$3aa$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c1_derefidx_vbuxx(.*c1.*)", ".*=.*aa.*", "lda {c1},x\n", "$1=$2vb$3aa$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*)", ".*=.*aa.*|.*c1.*c1.*", "lda {c1},y\n", "$1=$2vb$3aa$4", null, mapC)); + synths.add(new FragmentSynthesis("(.*)=(.*c1.*)pb(.)c1_derefidx_vbuyy(.*)", ".*=.*aa.*", "lda {c1},y\n", "$1=$2vb$3aa$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c1_derefidx_vbuyy(.*c1.*)", ".*=.*aa.*", "lda {c1},y\n", "$1=$2vb$3aa$4", null, null)); + + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c2_derefidx_vbuxx(.*)", ".*=.*aa.*|.*c2.*c2.*", "lda {c2},x\n", "$1=$2vb$3aa$4", null, mapC3)); + synths.add(new FragmentSynthesis("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuxx(.*)", ".*=.*aa.*", "lda {c2},x\n", "$1=$2vb$3aa$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c2_derefidx_vbuxx(.*c2.*)", ".*=.*aa.*", "lda {c2},x\n", "$1=$2vb$3aa$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*)", ".*=.*aa.*|.*c2.*c2.*", "lda {c2},y\n", "$1=$2vb$3aa$4", null, mapC3)); + synths.add(new FragmentSynthesis("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuyy(.*)", ".*=.*aa.*", "lda {c2},y\n", "$1=$2vb$3aa$4", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*c2.*)", ".*=.*aa.*", "lda {c2},y\n", "$1=$2vb$3aa$4", null, null)); + + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa(.*)", ".*=.*xx.*", "tax\n", "$1=$2_derefidx_vbuxx$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa(.*)", ".*=.*yy.*", "tay\n", "$1=$2_derefidx_vbuyy$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1(.*)", ".*=.*xx.*|.*z1.*z1.*", "ldx {z1}\n", "$1=$2_derefidx_vbuxx$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1(.*)", ".*=.*yy.*|.*z1.*z1.*", "ldy {z1}\n", "$1=$2_derefidx_vbuyy$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz2(.*)", ".*=.*xx.*|.*z2.*z2.*", "ldx {z2}\n", "$1=$2_derefidx_vbuxx$3", null, mapZ3)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz2(.*)", ".*=.*yy.*|.*z2.*z2.*", "ldy {z2}\n", "$1=$2_derefidx_vbuyy$3", null, mapZ3)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz3(.*)", ".*=.*yy.*", "ldy {z3}\n", "$1=$2_derefidx_vbuyy$3", null, null)); + synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz3(.*)", ".*=.*xx.*", "ldx {z3}\n", "$1=$2_derefidx_vbuxx$3", null, null)); + + synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1(.*)_derefidx_vbuz1(.*)", ".*z1.*z1.*z1.*|.*xx.*", null, "$1_derefidx_vbuxx$2_derefidx_vbuxx$3", "ldx {z1}\n", mapZ)); + synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1(.*)_derefidx_vbuz1(.*)", ".*z1.*z1.*z1.*|.*yy.*", null, "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", "ldy {z1}\n", mapZ)); + synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", ".*z2.*z2.*z2.*|.*xx.*", null, "$1_derefidx_vbuxx$2_derefidx_vbuxx$3", "ldx {z2}\n", mapZ)); + synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz2(.*)_derefidx_vbuz2(.*)", ".*z2.*z2.*z2.*|.*yy.*", null, "$1_derefidx_vbuyy$2_derefidx_vbuyy$3", "ldy {z2}\n", mapZ)); + synths.add(new FragmentSynthesis("(.*)=(.*)_vbuxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbuaa", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)_vbsxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa\n", "$1=$2_vbsaa", null, null)); synths.add(new FragmentSynthesis("(.*)=(.*)_vbuyy", ".*=.*[ay][ay].*yy|.*derefidx_vb.yy", "tya\n", "$1=$2_vbuaa", null, null)); @@ -153,20 +195,19 @@ public class AsmFragmentManager { synths.add(new FragmentSynthesis("vbuz1=vbuz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*z1.*", "lda {z1}\n", "vbuaa=vbuaa$1", "sta {z1}\n", mapZ)); synths.add(new FragmentSynthesis("vbsz1=vbsz1(.*)", ".*=.*vb.aa.*|.*z1.*z1.*z1.*", "lda {z1}\n", "vbsaa=vbsaa$1", "sta {z1}\n", mapZ)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*yy.*", "tay\n", "$1=$2_derefidx_vbuyy", null, null)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuaa", ".*=.*xx.*", "tax\n", "$1=$2_derefidx_vbuxx", null, null)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*yy.*|.*z1.*z1.*", "ldy {z1}\n", "$1=$2_derefidx_vbuyy", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz1", ".*=.*xx.*|.*z1.*z1.*", "ldx {z1}\n", "$1=$2_derefidx_vbuxx", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz2", ".*=.*xx.*|.*z2.*z2.*", "ldx {z2}\n", "$1=$2_derefidx_vbuxx", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz2", ".*=.*yy.*|.*z2.*z2.*", "ldy {z2}\n", "$1=$2_derefidx_vbuyy", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz3", ".*=.*xx.*|.*z3.*z3.*", "ldx {z3}\n", "$1=$2_derefidx_vbuxx", null, mapZ)); - synths.add(new FragmentSynthesis("(.*)=(.*)_derefidx_vbuz3", ".*=.*yy.*|.*z3.*z3.*", "ldy {z3}\n", "$1=$2_derefidx_vbuyy", null, mapZ)); synths.add(new FragmentSynthesis("vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {z1}\n", "vbuaa_$1_$2", null, mapZ)); synths.add(new FragmentSynthesis("vbsz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {z1}\n", "vbsaa_$1_$2", null, mapZ)); - synths.add(new FragmentSynthesis("_deref_vwuc1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {c1}\n", "vbuaa_$1_$2", null, mapConst)); + synths.add(new FragmentSynthesis("_deref_vwuc1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {c1}\n", "vbuaa_$1_$2", null, mapC)); synths.add(new FragmentSynthesis("_deref_pb(.)z1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*|.*vb.yy.*|.*z1.*z1.*", "ldy #0\n" + "lda ({z1}),y\n", "vb$1aa_$2_$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*z1.*z1.*|.*vb.yy.*", "ldy {z1}\n", "$1_derefidx_vbuyy_$2_$3", null, mapZ)); + synths.add(new FragmentSynthesis("(.*)_derefidx_vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*z1.*z1.*|.*vb.xx.*", "ldx {z1}\n", "$1_derefidx_vbuxx_$2_$3", null, mapZ)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*)", ".*c1.*c1.*|.*aa.*", "lda {c1},y\n", "vb$1aa_$2_$3", null, mapC)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*c1.*)", ".*aa.*", "lda {c1},y\n", "vb$1aa_$2_$3", null, null)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*)", ".*c1.*c1.*|.*aa.*", "lda {c1},x\n", "vb$1aa_$2_$3", null, mapC)); + synths.add(new FragmentSynthesis("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*c1.*)", ".*aa.*", "lda {c1},x\n", "vb$1aa_$2_$3", null, null)); + synths.add(new FragmentSynthesis("(.*)_ge_(vb.aa)_then_(.*)", ".*vb.aa.*_ge.*", null, "$2_lt_$1_then_$3", null, null)); synths.add(new FragmentSynthesis("(.*)_ge_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_ge.*", null, "$2_lt_$1_then_$3", null, null)); synths.add(new FragmentSynthesis("(.*)_ge_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_ge.*", null, "$2_lt_$1_then_$3", null, null)); diff --git a/src/main/java/dk/camelot64/kickc/model/LvalueIntermediate.java b/src/main/java/dk/camelot64/kickc/model/LvalueIntermediate.java new file mode 100644 index 000000000..c624d478a --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/LvalueIntermediate.java @@ -0,0 +1,27 @@ +package dk.camelot64.kickc.model; + +/** + * LValue containing an intermediate variable during parsing. Must be resolved to a proper LValue in Pass 1 - or result in failure + */ +public class LvalueIntermediate implements LValue { + + private VariableRef variable; + + public LvalueIntermediate(VariableRef variable) { + this.variable = variable; + } + + public VariableRef getVariable() { + return variable; + } + + @Override + public String toString(Program program) { + return "lval" + "(" + variable.toString(program) + ")"; + } + + public void setVariable(VariableRef variable) { + this.variable = variable; + } + +} diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java index 872c15655..a0aa9ace4 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java @@ -18,6 +18,9 @@ public class SymbolTypeInference { * @return The type of the resulting value */ public static SymbolType inferType(ProgramScope programScope, Operator operator, RValue rValue) { + if(operator==null) { + return inferType(programScope, rValue); + } if (operator.equals(Operator.CAST_BYTE)) { return SymbolType.BYTE; } else if (operator.equals(Operator.CAST_SBYTE)) { @@ -375,4 +378,45 @@ public class SymbolTypeInference { return false; } + public static void inferCallLValue(ProgramScope programScope, StatementCall call) { + LValue lValue = call.getlValue(); + if(lValue instanceof VariableRef) { + Variable lValueVar = programScope.getVariable((VariableRef) lValue); + if(SymbolType.VAR.equals(lValueVar.getType())) { + Procedure procedure = programScope.getProcedure(call.getProcedure()); + lValueVar.setTypeInferred(procedure.getReturnType()); + } + } + } + + public static void inferAssignmentLValue(ProgramScope programScope, StatementAssignment assignment) { + LValue lValue = assignment.getlValue(); + if (lValue instanceof VariableRef) { + Variable symbol = programScope.getVariable((VariableRef) lValue); + if (SymbolType.VAR.equals(symbol.getType())) { + // Unresolved symbol - perform inference + Operator operator = assignment.getOperator(); + if (operator == null || assignment.getrValue1() == null) { + // Copy operation or Unary operation + RValue rValue = assignment.getrValue2(); + SymbolType type = inferType(programScope, operator, rValue); + symbol.setTypeInferred(type); + } else { + // Binary operation + SymbolType type = inferType(programScope, assignment.getrValue1(), assignment.getOperator(), assignment.getrValue2()); + symbol.setTypeInferred(type); + } + } + } + } + + public static void inferLValue(ProgramScope programScope, StatementLValue statementLValue) { + if(statementLValue instanceof StatementAssignment) { + inferAssignmentLValue(programScope, (StatementAssignment) statementLValue); + } else if(statementLValue instanceof StatementCall) { + inferCallLValue(programScope, (StatementCall) statementLValue); + } else { + throw new RuntimeException("LValue statement not implemented "+statementLValue); + } + } } diff --git a/src/main/java/dk/camelot64/kickc/parser/KickC.g4 b/src/main/java/dk/camelot64/kickc/parser/KickC.g4 index 75f79fa8f..c5b097a1f 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickC.g4 +++ b/src/main/java/dk/camelot64/kickc/parser/KickC.g4 @@ -43,7 +43,6 @@ stmtSeq stmt : declVar #stmtDeclVar | '{' stmtSeq? '}' #stmtBlock - | lvalue '=' expr ';' #stmtAssignment | expr ';' #stmtExpr | 'if' '(' expr ')' stmt ( 'else' stmt )? #stmtIfElse | 'while' '(' expr ')' stmt #stmtWhile @@ -58,7 +57,7 @@ forDeclaration ; forIteration - : ';' expr ';' expr? # forClassic + : ';' expr ';' expr # forClassic | ':' expr ( '..' ) expr #forRange ; @@ -69,14 +68,6 @@ typeDecl | typeDecl '[' (expr)? ']' #typeArray ; -lvalue - : NAME #lvalueName - | '*' NAME #lvaluePtr - | '*' '(' expr ')' #lvaluePtrExpr - | ('<' | '>' ) lvalue #lvalueLoHi - | lvalue '[' expr ']' #lvalueArray - ; - expr : '(' expr ')' #exprPar | NAME '(' parameterList? ')' #exprCall @@ -84,7 +75,8 @@ expr | expr '[' expr ']' #exprArray | ('--' | '++' ) expr #exprPreMod | expr ('--' | '++' ) #exprPostMod - | ('+' | '-' | '!' | '&' | '*' | '~') expr #exprUnary + | '*' expr #exprPtr + | ('+' | '-' | '!' | '&' | '~') expr #exprUnary | expr ('>>' | '<<' ) expr #exprBinary | expr ('*' | '/' | '%' ) expr #exprBinary | expr ( '+' | '-') expr #exprBinary @@ -95,6 +87,7 @@ expr | expr ( '|' ) expr #exprBinary | expr ( '&&' ) expr #exprBinary | expr ( '||' ) expr #exprBinary + | expr '=' expr #exprAssignment | '{' expr (',' expr )* '}' #initList | NAME #exprId | NUMBER #exprNumber diff --git a/src/main/java/dk/camelot64/kickc/parser/KickC.tokens b/src/main/java/dk/camelot64/kickc/parser/KickC.tokens index 7205ec01e..d142d4efa 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickC.tokens +++ b/src/main/java/dk/camelot64/kickc/parser/KickC.tokens @@ -86,19 +86,19 @@ COMMENT_BLOCK=66 '*'=20 '['=21 ']'=22 -'<'=23 -'>'=24 -'--'=25 -'++'=26 -'+'=27 -'-'=28 -'!'=29 -'&'=30 -'~'=31 -'>>'=32 -'<<'=33 -'/'=34 -'%'=35 +'--'=23 +'++'=24 +'+'=25 +'-'=26 +'!'=27 +'&'=28 +'~'=29 +'>>'=30 +'<<'=31 +'/'=32 +'%'=33 +'<'=34 +'>'=35 '=='=36 '!='=37 '<>'=38 diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java index 0af96d7df..c7add4b5f 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCBaseListener.java @@ -167,18 +167,6 @@ public class KickCBaseListener implements KickCListener { *

The default implementation does nothing.

*/ @Override public void exitStmtBlock(KickCParser.StmtBlockContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterStmtAssignment(KickCParser.StmtAssignmentContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitStmtAssignment(KickCParser.StmtAssignmentContext ctx) { } /** * {@inheritDoc} * @@ -352,61 +340,13 @@ public class KickCBaseListener implements KickCListener { * *

The default implementation does nothing.

*/ - @Override public void enterLvalueName(KickCParser.LvalueNameContext ctx) { } + @Override public void enterExprPtr(KickCParser.ExprPtrContext ctx) { } /** * {@inheritDoc} * *

The default implementation does nothing.

*/ - @Override public void exitLvalueName(KickCParser.LvalueNameContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLvaluePtr(KickCParser.LvaluePtrContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLvaluePtr(KickCParser.LvaluePtrContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLvalueArray(KickCParser.LvalueArrayContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLvalueArray(KickCParser.LvalueArrayContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterLvalueLoHi(KickCParser.LvalueLoHiContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitLvalueLoHi(KickCParser.LvalueLoHiContext ctx) { } + @Override public void exitExprPtr(KickCParser.ExprPtrContext ctx) { } /** * {@inheritDoc} * @@ -563,6 +503,18 @@ public class KickCBaseListener implements KickCListener { *

The default implementation does nothing.

*/ @Override public void exitExprId(KickCParser.ExprIdContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void enterExprAssignment(KickCParser.ExprAssignmentContext ctx) { } + /** + * {@inheritDoc} + * + *

The default implementation does nothing.

+ */ + @Override public void exitExprAssignment(KickCParser.ExprAssignmentContext ctx) { } /** * {@inheritDoc} * diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java index ef9321667..93ee98f12 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCBaseVisitor.java @@ -102,13 +102,6 @@ public class KickCBaseVisitor extends AbstractParseTreeVisitor implements * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitStmtBlock(KickCParser.StmtBlockContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitStmtAssignment(KickCParser.StmtAssignmentContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * @@ -213,35 +206,7 @@ public class KickCBaseVisitor extends AbstractParseTreeVisitor implements *

The default implementation returns the result of calling * {@link #visitChildren} on {@code ctx}.

*/ - @Override public T visitLvalueName(KickCParser.LvalueNameContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitLvaluePtr(KickCParser.LvaluePtrContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitLvalueArray(KickCParser.LvalueArrayContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitLvalueLoHi(KickCParser.LvalueLoHiContext ctx) { return visitChildren(ctx); } + @Override public T visitExprPtr(KickCParser.ExprPtrContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * @@ -333,6 +298,13 @@ public class KickCBaseVisitor extends AbstractParseTreeVisitor implements * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitExprId(KickCParser.ExprIdContext ctx) { return visitChildren(ctx); } + /** + * {@inheritDoc} + * + *

The default implementation returns the result of calling + * {@link #visitChildren} on {@code ctx}.

+ */ + @Override public T visitExprAssignment(KickCParser.ExprAssignmentContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java index 42d59254f..824404d54 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.java @@ -51,8 +51,8 @@ public class KickCLexer extends Lexer { private static final String[] _LITERAL_NAMES = { null, "'import'", "'('", "')'", "'{'", "'}'", "','", "'const'", "'='", "';'", "'if'", "'else'", "'while'", "'do'", "'for'", "'return'", "'asm'", - "':'", "'..'", "'signed'", "'*'", "'['", "']'", "'<'", "'>'", "'--'", - "'++'", "'+'", "'-'", "'!'", "'&'", "'~'", "'>>'", "'<<'", "'/'", "'%'", + "':'", "'..'", "'signed'", "'*'", "'['", "']'", "'--'", "'++'", "'+'", + "'-'", "'!'", "'&'", "'~'", "'>>'", "'<<'", "'/'", "'%'", "'<'", "'>'", "'=='", "'!='", "'<>'", "'<='", "'=<'", "'>='", "'=>'", "'^'", "'|'", "'&&'", "'||'", "'#'" }; @@ -137,10 +137,10 @@ public class KickCLexer extends Lexer { "\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\20\3\20"+ "\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\22\3\22\3\23\3\23\3\23"+ "\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30"+ - "\3\30\3\31\3\31\3\32\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\35\3\35\3\36"+ - "\3\36\3\37\3\37\3 \3 \3!\3!\3!\3\"\3\"\3\"\3#\3#\3$\3$\3%\3%\3%\3&\3&"+ - "\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3,\3,\3-\3-\3.\3."+ - "\3.\3/\3/\3/\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3"+ + "\3\30\3\30\3\31\3\31\3\31\3\32\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36"+ + "\3\36\3\37\3\37\3\37\3 \3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3%\3%\3&\3"+ + "&\3&\3\'\3\'\3\'\3(\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3,\3,\3-\3-\3.\3"+ + ".\3.\3/\3/\3/\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3"+ "\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3"+ "\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3"+ "\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3\61\3"+ @@ -193,9 +193,9 @@ public class KickCLexer extends Lexer { "\2\25\u00ac\3\2\2\2\27\u00af\3\2\2\2\31\u00b4\3\2\2\2\33\u00ba\3\2\2\2"+ "\35\u00bd\3\2\2\2\37\u00c1\3\2\2\2!\u00c8\3\2\2\2#\u00cc\3\2\2\2%\u00ce"+ "\3\2\2\2\'\u00d1\3\2\2\2)\u00d8\3\2\2\2+\u00da\3\2\2\2-\u00dc\3\2\2\2"+ - "/\u00de\3\2\2\2\61\u00e0\3\2\2\2\63\u00e2\3\2\2\2\65\u00e5\3\2\2\2\67"+ - "\u00e8\3\2\2\29\u00ea\3\2\2\2;\u00ec\3\2\2\2=\u00ee\3\2\2\2?\u00f0\3\2"+ - "\2\2A\u00f2\3\2\2\2C\u00f5\3\2\2\2E\u00f8\3\2\2\2G\u00fa\3\2\2\2I\u00fc"+ + "/\u00de\3\2\2\2\61\u00e1\3\2\2\2\63\u00e4\3\2\2\2\65\u00e6\3\2\2\2\67"+ + "\u00e8\3\2\2\29\u00ea\3\2\2\2;\u00ec\3\2\2\2=\u00ee\3\2\2\2?\u00f1\3\2"+ + "\2\2A\u00f4\3\2\2\2C\u00f6\3\2\2\2E\u00f8\3\2\2\2G\u00fa\3\2\2\2I\u00fc"+ "\3\2\2\2K\u00ff\3\2\2\2M\u0102\3\2\2\2O\u0105\3\2\2\2Q\u0108\3\2\2\2S"+ "\u010b\3\2\2\2U\u010e\3\2\2\2W\u0111\3\2\2\2Y\u0113\3\2\2\2[\u0115\3\2"+ "\2\2]\u0118\3\2\2\2_\u011b\3\2\2\2a\u01f8\3\2\2\2c\u020d\3\2\2\2e\u020f"+ @@ -224,14 +224,14 @@ public class KickCLexer extends Lexer { "\u00d2\u00d3\7k\2\2\u00d3\u00d4\7i\2\2\u00d4\u00d5\7p\2\2\u00d5\u00d6"+ "\7g\2\2\u00d6\u00d7\7f\2\2\u00d7(\3\2\2\2\u00d8\u00d9\7,\2\2\u00d9*\3"+ "\2\2\2\u00da\u00db\7]\2\2\u00db,\3\2\2\2\u00dc\u00dd\7_\2\2\u00dd.\3\2"+ - "\2\2\u00de\u00df\7>\2\2\u00df\60\3\2\2\2\u00e0\u00e1\7@\2\2\u00e1\62\3"+ - "\2\2\2\u00e2\u00e3\7/\2\2\u00e3\u00e4\7/\2\2\u00e4\64\3\2\2\2\u00e5\u00e6"+ - "\7-\2\2\u00e6\u00e7\7-\2\2\u00e7\66\3\2\2\2\u00e8\u00e9\7-\2\2\u00e98"+ - "\3\2\2\2\u00ea\u00eb\7/\2\2\u00eb:\3\2\2\2\u00ec\u00ed\7#\2\2\u00ed<\3"+ - "\2\2\2\u00ee\u00ef\7(\2\2\u00ef>\3\2\2\2\u00f0\u00f1\7\u0080\2\2\u00f1"+ - "@\3\2\2\2\u00f2\u00f3\7@\2\2\u00f3\u00f4\7@\2\2\u00f4B\3\2\2\2\u00f5\u00f6"+ - "\7>\2\2\u00f6\u00f7\7>\2\2\u00f7D\3\2\2\2\u00f8\u00f9\7\61\2\2\u00f9F"+ - "\3\2\2\2\u00fa\u00fb\7\'\2\2\u00fbH\3\2\2\2\u00fc\u00fd\7?\2\2\u00fd\u00fe"+ + "\2\2\u00de\u00df\7/\2\2\u00df\u00e0\7/\2\2\u00e0\60\3\2\2\2\u00e1\u00e2"+ + "\7-\2\2\u00e2\u00e3\7-\2\2\u00e3\62\3\2\2\2\u00e4\u00e5\7-\2\2\u00e5\64"+ + "\3\2\2\2\u00e6\u00e7\7/\2\2\u00e7\66\3\2\2\2\u00e8\u00e9\7#\2\2\u00e9"+ + "8\3\2\2\2\u00ea\u00eb\7(\2\2\u00eb:\3\2\2\2\u00ec\u00ed\7\u0080\2\2\u00ed"+ + "<\3\2\2\2\u00ee\u00ef\7@\2\2\u00ef\u00f0\7@\2\2\u00f0>\3\2\2\2\u00f1\u00f2"+ + "\7>\2\2\u00f2\u00f3\7>\2\2\u00f3@\3\2\2\2\u00f4\u00f5\7\61\2\2\u00f5B"+ + "\3\2\2\2\u00f6\u00f7\7\'\2\2\u00f7D\3\2\2\2\u00f8\u00f9\7>\2\2\u00f9F"+ + "\3\2\2\2\u00fa\u00fb\7@\2\2\u00fbH\3\2\2\2\u00fc\u00fd\7?\2\2\u00fd\u00fe"+ "\7?\2\2\u00feJ\3\2\2\2\u00ff\u0100\7#\2\2\u0100\u0101\7?\2\2\u0101L\3"+ "\2\2\2\u0102\u0103\7>\2\2\u0103\u0104\7@\2\2\u0104N\3\2\2\2\u0105\u0106"+ "\7>\2\2\u0106\u0107\7?\2\2\u0107P\3\2\2\2\u0108\u0109\7?\2\2\u0109\u010a"+ diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens index 7205ec01e..d142d4efa 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens +++ b/src/main/java/dk/camelot64/kickc/parser/KickCLexer.tokens @@ -86,19 +86,19 @@ COMMENT_BLOCK=66 '*'=20 '['=21 ']'=22 -'<'=23 -'>'=24 -'--'=25 -'++'=26 -'+'=27 -'-'=28 -'!'=29 -'&'=30 -'~'=31 -'>>'=32 -'<<'=33 -'/'=34 -'%'=35 +'--'=23 +'++'=24 +'+'=25 +'-'=26 +'!'=27 +'&'=28 +'~'=29 +'>>'=30 +'<<'=31 +'/'=32 +'%'=33 +'<'=34 +'>'=35 '=='=36 '!='=37 '<>'=38 diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCListener.java b/src/main/java/dk/camelot64/kickc/parser/KickCListener.java index 3fed9ae30..308b1cfc0 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCListener.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCListener.java @@ -145,18 +145,6 @@ public interface KickCListener extends ParseTreeListener { * @param ctx the parse tree */ void exitStmtBlock(KickCParser.StmtBlockContext ctx); - /** - * Enter a parse tree produced by the {@code stmtAssignment} - * labeled alternative in {@link KickCParser#stmt}. - * @param ctx the parse tree - */ - void enterStmtAssignment(KickCParser.StmtAssignmentContext ctx); - /** - * Exit a parse tree produced by the {@code stmtAssignment} - * labeled alternative in {@link KickCParser#stmt}. - * @param ctx the parse tree - */ - void exitStmtAssignment(KickCParser.StmtAssignmentContext ctx); /** * Enter a parse tree produced by the {@code stmtExpr} * labeled alternative in {@link KickCParser#stmt}. @@ -326,65 +314,17 @@ public interface KickCListener extends ParseTreeListener { */ void exitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx); /** - * Enter a parse tree produced by the {@code lvalueName} - * labeled alternative in {@link KickCParser#lvalue}. + * Enter a parse tree produced by the {@code exprPtr} + * labeled alternative in {@link KickCParser#expr}. * @param ctx the parse tree */ - void enterLvalueName(KickCParser.LvalueNameContext ctx); + void enterExprPtr(KickCParser.ExprPtrContext ctx); /** - * Exit a parse tree produced by the {@code lvalueName} - * labeled alternative in {@link KickCParser#lvalue}. + * Exit a parse tree produced by the {@code exprPtr} + * labeled alternative in {@link KickCParser#expr}. * @param ctx the parse tree */ - void exitLvalueName(KickCParser.LvalueNameContext ctx); - /** - * Enter a parse tree produced by the {@code lvaluePtr} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void enterLvaluePtr(KickCParser.LvaluePtrContext ctx); - /** - * Exit a parse tree produced by the {@code lvaluePtr} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void exitLvaluePtr(KickCParser.LvaluePtrContext ctx); - /** - * Enter a parse tree produced by the {@code lvaluePtrExpr} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void enterLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx); - /** - * Exit a parse tree produced by the {@code lvaluePtrExpr} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void exitLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx); - /** - * Enter a parse tree produced by the {@code lvalueArray} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void enterLvalueArray(KickCParser.LvalueArrayContext ctx); - /** - * Exit a parse tree produced by the {@code lvalueArray} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void exitLvalueArray(KickCParser.LvalueArrayContext ctx); - /** - * Enter a parse tree produced by the {@code lvalueLoHi} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void enterLvalueLoHi(KickCParser.LvalueLoHiContext ctx); - /** - * Exit a parse tree produced by the {@code lvalueLoHi} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - */ - void exitLvalueLoHi(KickCParser.LvalueLoHiContext ctx); + void exitExprPtr(KickCParser.ExprPtrContext ctx); /** * Enter a parse tree produced by the {@code exprPreMod} * labeled alternative in {@link KickCParser#expr}. @@ -541,6 +481,18 @@ public interface KickCListener extends ParseTreeListener { * @param ctx the parse tree */ void exitExprId(KickCParser.ExprIdContext ctx); + /** + * Enter a parse tree produced by the {@code exprAssignment} + * labeled alternative in {@link KickCParser#expr}. + * @param ctx the parse tree + */ + void enterExprAssignment(KickCParser.ExprAssignmentContext ctx); + /** + * Exit a parse tree produced by the {@code exprAssignment} + * labeled alternative in {@link KickCParser#expr}. + * @param ctx the parse tree + */ + void exitExprAssignment(KickCParser.ExprAssignmentContext ctx); /** * Enter a parse tree produced by the {@code exprArray} * labeled alternative in {@link KickCParser#expr}. diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java index f79bb48e3..1262bde8b 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCParser.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCParser.java @@ -31,21 +31,21 @@ public class KickCParser extends Parser { RULE_file = 0, RULE_asmFile = 1, RULE_importSeq = 2, RULE_importDecl = 3, RULE_declSeq = 4, RULE_decl = 5, RULE_parameterListDecl = 6, RULE_parameterDecl = 7, RULE_declVar = 8, RULE_stmtSeq = 9, RULE_stmt = 10, RULE_forDeclaration = 11, - RULE_forIteration = 12, RULE_typeDecl = 13, RULE_lvalue = 14, RULE_expr = 15, - RULE_parameterList = 16, RULE_asmLines = 17, RULE_asmLine = 18, RULE_asmLabel = 19, - RULE_asmInstruction = 20, RULE_asmParamMode = 21, RULE_asmExpr = 22; + RULE_forIteration = 12, RULE_typeDecl = 13, RULE_expr = 14, RULE_parameterList = 15, + RULE_asmLines = 16, RULE_asmLine = 17, RULE_asmLabel = 18, RULE_asmInstruction = 19, + RULE_asmParamMode = 20, RULE_asmExpr = 21; public static final String[] ruleNames = { "file", "asmFile", "importSeq", "importDecl", "declSeq", "decl", "parameterListDecl", "parameterDecl", "declVar", "stmtSeq", "stmt", "forDeclaration", "forIteration", - "typeDecl", "lvalue", "expr", "parameterList", "asmLines", "asmLine", - "asmLabel", "asmInstruction", "asmParamMode", "asmExpr" + "typeDecl", "expr", "parameterList", "asmLines", "asmLine", "asmLabel", + "asmInstruction", "asmParamMode", "asmExpr" }; private static final String[] _LITERAL_NAMES = { null, "'import'", "'('", "')'", "'{'", "'}'", "','", "'const'", "'='", "';'", "'if'", "'else'", "'while'", "'do'", "'for'", "'return'", "'asm'", - "':'", "'..'", "'signed'", "'*'", "'['", "']'", "'<'", "'>'", "'--'", - "'++'", "'+'", "'-'", "'!'", "'&'", "'~'", "'>>'", "'<<'", "'/'", "'%'", + "':'", "'..'", "'signed'", "'*'", "'['", "']'", "'--'", "'++'", "'+'", + "'-'", "'!'", "'&'", "'~'", "'>>'", "'<<'", "'/'", "'%'", "'<'", "'>'", "'=='", "'!='", "'<>'", "'<='", "'=<'", "'>='", "'=>'", "'^'", "'|'", "'&&'", "'||'", "'#'" }; @@ -140,11 +140,11 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(46); + setState(44); importSeq(); - setState(47); + setState(45); declSeq(); - setState(48); + setState(46); match(EOF); } } @@ -189,9 +189,9 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(50); + setState(48); asmLines(); - setState(51); + setState(49); match(EOF); } } @@ -239,17 +239,17 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(56); + setState(54); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__0) { { { - setState(53); + setState(51); importDecl(); } } - setState(58); + setState(56); _errHandler.sync(this); _la = _input.LA(1); } @@ -293,9 +293,9 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(59); + setState(57); match(T__0); - setState(60); + setState(58); match(STRING); } } @@ -343,17 +343,17 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(63); + setState(61); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(62); + setState(60); decl(); } } - setState(65); + setState(63); _errHandler.sync(this); _la = _input.LA(1); } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__6) | (1L << T__18) | (1L << SIMPLETYPE))) != 0) ); @@ -432,44 +432,44 @@ public class KickCParser extends Parser { enterRule(_localctx, 10, RULE_decl); int _la; try { - setState(81); + setState(79); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) { case 1: _localctx = new DeclMethodContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(67); + setState(65); typeDecl(0); - setState(68); + setState(66); match(NAME); - setState(69); + setState(67); match(T__1); - setState(71); + setState(69); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__18 || _la==SIMPLETYPE) { { - setState(70); + setState(68); parameterListDecl(); } } - setState(73); + setState(71); match(T__2); - setState(74); + setState(72); match(T__3); - setState(76); + setState(74); _errHandler.sync(this); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__6) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__18) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__6) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__18) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__33) | (1L << T__34) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { { - setState(75); + setState(73); stmtSeq(); } } - setState(78); + setState(76); match(T__4); } break; @@ -477,7 +477,7 @@ public class KickCParser extends Parser { _localctx = new DeclVariableContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(80); + setState(78); declVar(); } break; @@ -527,21 +527,21 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(83); + setState(81); parameterDecl(); - setState(88); + setState(86); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__5) { { { - setState(84); + setState(82); match(T__5); - setState(85); + setState(83); parameterDecl(); } } - setState(90); + setState(88); _errHandler.sync(this); _la = _input.LA(1); } @@ -588,9 +588,9 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(91); + setState(89); typeDecl(0); - setState(92); + setState(90); match(NAME); } } @@ -639,33 +639,33 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(95); + setState(93); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__6) { { - setState(94); + setState(92); match(T__6); } } - setState(97); + setState(95); typeDecl(0); - setState(98); + setState(96); match(NAME); - setState(101); + setState(99); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__7) { { - setState(99); + setState(97); match(T__7); - setState(100); + setState(98); expr(0); } } - setState(103); + setState(101); match(T__8); } } @@ -713,20 +713,20 @@ public class KickCParser extends Parser { try { enterOuterAlt(_localctx, 1); { - setState(106); + setState(104); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(105); + setState(103); stmt(); } } - setState(108); + setState(106); _errHandler.sync(this); _la = _input.LA(1); - } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__6) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__18) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0) ); + } while ( (((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__6) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__18) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__33) | (1L << T__34) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0) ); } } catch (RecognitionException re) { @@ -877,28 +877,6 @@ public class KickCParser extends Parser { else return visitor.visitChildren(this); } } - public static class StmtAssignmentContext extends StmtContext { - public LvalueContext lvalue() { - return getRuleContext(LvalueContext.class,0); - } - public ExprContext expr() { - return getRuleContext(ExprContext.class,0); - } - public StmtAssignmentContext(StmtContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).enterStmtAssignment(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).exitStmtAssignment(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitStmtAssignment(this); - else return visitor.visitChildren(this); - } - } public static class StmtAsmContext extends StmtContext { public AsmLinesContext asmLines() { return getRuleContext(AsmLinesContext.class,0); @@ -968,14 +946,14 @@ public class KickCParser extends Parser { enterRule(_localctx, 20, RULE_stmt); int _la; try { - setState(166); + setState(159); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { case 1: _localctx = new StmtDeclVarContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(110); + setState(108); declVar(); } break; @@ -983,167 +961,153 @@ public class KickCParser extends Parser { _localctx = new StmtBlockContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(111); + setState(109); match(T__3); - setState(113); + setState(111); _errHandler.sync(this); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__6) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__18) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__6) | (1L << T__9) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__18) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__33) | (1L << T__34) | (1L << SIMPLETYPE) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { { - setState(112); + setState(110); stmtSeq(); } } - setState(115); + setState(113); match(T__4); } break; case 3: - _localctx = new StmtAssignmentContext(_localctx); + _localctx = new StmtExprContext(_localctx); enterOuterAlt(_localctx, 3); { - setState(116); - lvalue(0); - setState(117); - match(T__7); - setState(118); + setState(114); expr(0); - setState(119); + setState(115); match(T__8); } break; case 4: - _localctx = new StmtExprContext(_localctx); + _localctx = new StmtIfElseContext(_localctx); enterOuterAlt(_localctx, 4); { - setState(121); - expr(0); - setState(122); - match(T__8); - } - break; - case 5: - _localctx = new StmtIfElseContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(124); + setState(117); match(T__9); - setState(125); + setState(118); match(T__1); - setState(126); + setState(119); expr(0); - setState(127); + setState(120); match(T__2); - setState(128); + setState(121); stmt(); - setState(131); + setState(124); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { case 1: { - setState(129); + setState(122); match(T__10); - setState(130); + setState(123); stmt(); } break; } } break; - case 6: + case 5: _localctx = new StmtWhileContext(_localctx); - enterOuterAlt(_localctx, 6); + enterOuterAlt(_localctx, 5); { - setState(133); + setState(126); match(T__11); - setState(134); + setState(127); match(T__1); - setState(135); + setState(128); expr(0); - setState(136); + setState(129); match(T__2); - setState(137); + setState(130); stmt(); } break; - case 7: + case 6: _localctx = new StmtDoWhileContext(_localctx); - enterOuterAlt(_localctx, 7); + enterOuterAlt(_localctx, 6); { - setState(139); + setState(132); match(T__12); - setState(140); + setState(133); stmt(); - setState(141); + setState(134); match(T__11); - setState(142); + setState(135); match(T__1); - setState(143); + setState(136); expr(0); - setState(144); + setState(137); match(T__2); - setState(145); + setState(138); match(T__8); } break; - case 8: + case 7: _localctx = new StmtForContext(_localctx); - enterOuterAlt(_localctx, 8); + enterOuterAlt(_localctx, 7); { - setState(147); + setState(140); match(T__13); - setState(148); + setState(141); match(T__1); - setState(150); + setState(143); _errHandler.sync(this); _la = _input.LA(1); if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__18) | (1L << SIMPLETYPE) | (1L << NAME))) != 0)) { { - setState(149); + setState(142); forDeclaration(); } } - setState(152); + setState(145); forIteration(); - setState(153); + setState(146); match(T__2); - setState(154); + setState(147); stmt(); } break; - case 9: + case 8: _localctx = new StmtReturnContext(_localctx); - enterOuterAlt(_localctx, 9); + enterOuterAlt(_localctx, 8); { - setState(156); + setState(149); match(T__14); - setState(158); + setState(151); _errHandler.sync(this); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__33) | (1L << T__34) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { { - setState(157); + setState(150); expr(0); } } - setState(160); + setState(153); match(T__8); } break; - case 10: + case 9: _localctx = new StmtAsmContext(_localctx); - enterOuterAlt(_localctx, 10); + enterOuterAlt(_localctx, 9); { - setState(161); + setState(154); match(T__15); - setState(162); + setState(155); match(T__3); - setState(163); + setState(156); asmLines(); - setState(164); + setState(157); match(T__4); } break; @@ -1203,26 +1167,26 @@ public class KickCParser extends Parser { _localctx = new ForDeclContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(169); + setState(162); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__18 || _la==SIMPLETYPE) { { - setState(168); + setState(161); typeDecl(0); } } - setState(171); + setState(164); match(NAME); - setState(174); + setState(167); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__7) { { - setState(172); + setState(165); match(T__7); - setState(173); + setState(166); expr(0); } } @@ -1299,46 +1263,37 @@ public class KickCParser extends Parser { public final ForIterationContext forIteration() throws RecognitionException { ForIterationContext _localctx = new ForIterationContext(_ctx, getState()); enterRule(_localctx, 24, RULE_forIteration); - int _la; try { - setState(187); + setState(179); _errHandler.sync(this); switch (_input.LA(1)) { case T__8: _localctx = new ForClassicContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(176); + setState(169); match(T__8); - setState(177); + setState(170); expr(0); - setState(178); + setState(171); match(T__8); - setState(180); - _errHandler.sync(this); - _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { - { - setState(179); - expr(0); - } - } - + setState(172); + expr(0); } break; case T__16: _localctx = new ForRangeContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(182); + setState(174); match(T__16); - setState(183); + setState(175); expr(0); { - setState(184); + setState(176); match(T__17); } - setState(185); + setState(177); expr(0); } break; @@ -1460,7 +1415,7 @@ public class KickCParser extends Parser { int _alt; enterOuterAlt(_localctx, 1); { - setState(193); + setState(185); _errHandler.sync(this); switch (_input.LA(1)) { case SIMPLETYPE: @@ -1469,7 +1424,7 @@ public class KickCParser extends Parser { _ctx = _localctx; _prevctx = _localctx; - setState(190); + setState(182); match(SIMPLETYPE); } break; @@ -1478,9 +1433,9 @@ public class KickCParser extends Parser { _localctx = new TypeSignedSimpleContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(191); + setState(183); match(T__18); - setState(192); + setState(184); match(SIMPLETYPE); } break; @@ -1488,24 +1443,24 @@ public class KickCParser extends Parser { throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); - setState(205); + setState(197); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,21,_ctx); + _alt = getInterpreter().adaptivePredict(_input,20,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(203); + setState(195); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { case 1: { _localctx = new TypePtrContext(new TypeDeclContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_typeDecl); - setState(195); + setState(187); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(196); + setState(188); match(T__19); } break; @@ -1513,251 +1468,30 @@ public class KickCParser extends Parser { { _localctx = new TypeArrayContext(new TypeDeclContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_typeDecl); - setState(197); + setState(189); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(198); + setState(190); match(T__20); - setState(200); + setState(192); _errHandler.sync(this); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__33) | (1L << T__34) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { { - setState(199); + setState(191); expr(0); } } - setState(202); + setState(194); match(T__21); } break; } } } - setState(207); + setState(199); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,21,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - public static class LvalueContext extends ParserRuleContext { - public LvalueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_lvalue; } - - public LvalueContext() { } - public void copyFrom(LvalueContext ctx) { - super.copyFrom(ctx); - } - } - public static class LvalueNameContext extends LvalueContext { - public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); } - public LvalueNameContext(LvalueContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).enterLvalueName(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).exitLvalueName(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitLvalueName(this); - else return visitor.visitChildren(this); - } - } - public static class LvaluePtrContext extends LvalueContext { - public TerminalNode NAME() { return getToken(KickCParser.NAME, 0); } - public LvaluePtrContext(LvalueContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).enterLvaluePtr(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).exitLvaluePtr(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitLvaluePtr(this); - else return visitor.visitChildren(this); - } - } - public static class LvaluePtrExprContext extends LvalueContext { - public ExprContext expr() { - return getRuleContext(ExprContext.class,0); - } - public LvaluePtrExprContext(LvalueContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).enterLvaluePtrExpr(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).exitLvaluePtrExpr(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitLvaluePtrExpr(this); - else return visitor.visitChildren(this); - } - } - public static class LvalueArrayContext extends LvalueContext { - public LvalueContext lvalue() { - return getRuleContext(LvalueContext.class,0); - } - public ExprContext expr() { - return getRuleContext(ExprContext.class,0); - } - public LvalueArrayContext(LvalueContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).enterLvalueArray(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).exitLvalueArray(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitLvalueArray(this); - else return visitor.visitChildren(this); - } - } - public static class LvalueLoHiContext extends LvalueContext { - public LvalueContext lvalue() { - return getRuleContext(LvalueContext.class,0); - } - public LvalueLoHiContext(LvalueContext ctx) { copyFrom(ctx); } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).enterLvalueLoHi(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof KickCListener ) ((KickCListener)listener).exitLvalueLoHi(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitLvalueLoHi(this); - else return visitor.visitChildren(this); - } - } - - public final LvalueContext lvalue() throws RecognitionException { - return lvalue(0); - } - - private LvalueContext lvalue(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - LvalueContext _localctx = new LvalueContext(_ctx, _parentState); - LvalueContext _prevctx = _localctx; - int _startState = 28; - enterRecursionRule(_localctx, 28, RULE_lvalue, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(219); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { - case 1: - { - _localctx = new LvalueNameContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(209); - match(NAME); - } - break; - case 2: - { - _localctx = new LvaluePtrContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(210); - match(T__19); - setState(211); - match(NAME); - } - break; - case 3: - { - _localctx = new LvaluePtrExprContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(212); - match(T__19); - setState(213); - match(T__1); - setState(214); - expr(0); - setState(215); - match(T__2); - } - break; - case 4: - { - _localctx = new LvalueLoHiContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(217); - _la = _input.LA(1); - if ( !(_la==T__22 || _la==T__23) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(218); - lvalue(2); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(228); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,23,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - { - _localctx = new LvalueArrayContext(new LvalueContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_lvalue); - setState(221); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(222); - match(T__20); - setState(223); - expr(0); - setState(224); - match(T__21); - } - } - } - setState(230); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,23,_ctx); + _alt = getInterpreter().adaptivePredict(_input,20,_ctx); } } } @@ -1783,6 +1517,25 @@ public class KickCParser extends Parser { super.copyFrom(ctx); } } + public static class ExprPtrContext extends ExprContext { + public ExprContext expr() { + return getRuleContext(ExprContext.class,0); + } + public ExprPtrContext(ExprContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof KickCListener ) ((KickCListener)listener).enterExprPtr(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof KickCListener ) ((KickCListener)listener).exitExprPtr(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitExprPtr(this); + else return visitor.visitChildren(this); + } + } public static class ExprPreModContext extends ExprContext { public ExprContext expr() { return getRuleContext(ExprContext.class,0); @@ -2030,6 +1783,28 @@ public class KickCParser extends Parser { else return visitor.visitChildren(this); } } + public static class ExprAssignmentContext extends ExprContext { + public List expr() { + return getRuleContexts(ExprContext.class); + } + public ExprContext expr(int i) { + return getRuleContext(ExprContext.class,i); + } + public ExprAssignmentContext(ExprContext ctx) { copyFrom(ctx); } + @Override + public void enterRule(ParseTreeListener listener) { + if ( listener instanceof KickCListener ) ((KickCListener)listener).enterExprAssignment(this); + } + @Override + public void exitRule(ParseTreeListener listener) { + if ( listener instanceof KickCListener ) ((KickCListener)listener).exitExprAssignment(this); + } + @Override + public T accept(ParseTreeVisitor visitor) { + if ( visitor instanceof KickCVisitor ) return ((KickCVisitor)visitor).visitExprAssignment(this); + else return visitor.visitChildren(this); + } + } public static class ExprArrayContext extends ExprContext { public List expr() { return getRuleContexts(ExprContext.class); @@ -2062,27 +1837,27 @@ public class KickCParser extends Parser { int _parentState = getState(); ExprContext _localctx = new ExprContext(_ctx, _parentState); ExprContext _prevctx = _localctx; - int _startState = 30; - enterRecursionRule(_localctx, 30, RULE_expr, _p); + int _startState = 28; + enterRecursionRule(_localctx, 28, RULE_expr, _p); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { - setState(269); + setState(240); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { case 1: { _localctx = new ExprParContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(232); + setState(201); match(T__1); - setState(233); + setState(202); expr(0); - setState(234); + setState(203); match(T__2); } break; @@ -2091,21 +1866,21 @@ public class KickCParser extends Parser { _localctx = new ExprCallContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(236); + setState(205); match(NAME); - setState(237); + setState(206); match(T__1); - setState(239); + setState(208); _errHandler.sync(this); _la = _input.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { + if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__1) | (1L << T__3) | (1L << T__19) | (1L << T__22) | (1L << T__23) | (1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__33) | (1L << T__34) | (1L << STRING) | (1L << CHAR) | (1L << BOOLEAN) | (1L << NUMBER) | (1L << NAME))) != 0)) { { - setState(238); + setState(207); parameterList(); } } - setState(241); + setState(210); match(T__2); } break; @@ -2114,14 +1889,14 @@ public class KickCParser extends Parser { _localctx = new ExprCastContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(242); + setState(211); match(T__1); - setState(243); + setState(212); typeDecl(0); - setState(244); + setState(213); match(T__2); - setState(245); - expr(21); + setState(214); + expr(23); } break; case 4: @@ -2129,45 +1904,7 @@ public class KickCParser extends Parser { _localctx = new ExprPreModContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(247); - _la = _input.LA(1); - if ( !(_la==T__24 || _la==T__25) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(248); - expr(19); - } - break; - case 5: - { - _localctx = new ExprUnaryContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(249); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__19) | (1L << T__26) | (1L << T__27) | (1L << T__28) | (1L << T__29) | (1L << T__30))) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(250); - expr(17); - } - break; - case 6: - { - _localctx = new ExprUnaryContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(251); + setState(216); _la = _input.LA(1); if ( !(_la==T__22 || _la==T__23) ) { _errHandler.recoverInline(this); @@ -2177,106 +1914,155 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(252); - expr(13); + setState(217); + expr(21); + } + break; + case 5: + { + _localctx = new ExprPtrContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(218); + match(T__19); + setState(219); + expr(19); + } + break; + case 6: + { + _localctx = new ExprUnaryContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(220); + _la = _input.LA(1); + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__24) | (1L << T__25) | (1L << T__26) | (1L << T__27) | (1L << T__28))) != 0)) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(221); + expr(18); } break; case 7: + { + _localctx = new ExprUnaryContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(222); + _la = _input.LA(1); + if ( !(_la==T__33 || _la==T__34) ) { + _errHandler.recoverInline(this); + } + else { + if ( _input.LA(1)==Token.EOF ) matchedEOF = true; + _errHandler.reportMatch(this); + consume(); + } + setState(223); + expr(14); + } + break; + case 8: { _localctx = new InitListContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(253); + setState(224); match(T__3); - setState(254); + setState(225); expr(0); - setState(259); + setState(230); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__5) { { { - setState(255); + setState(226); match(T__5); - setState(256); + setState(227); expr(0); } } - setState(261); + setState(232); _errHandler.sync(this); _la = _input.LA(1); } - setState(262); + setState(233); match(T__4); } break; - case 8: - { - _localctx = new ExprIdContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(264); - match(NAME); - } - break; case 9: { - _localctx = new ExprNumberContext(_localctx); + _localctx = new ExprIdContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(265); - match(NUMBER); + setState(235); + match(NAME); } break; case 10: { - _localctx = new ExprStringContext(_localctx); + _localctx = new ExprNumberContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(266); - match(STRING); + setState(236); + match(NUMBER); } break; case 11: { - _localctx = new ExprCharContext(_localctx); + _localctx = new ExprStringContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(267); - match(CHAR); + setState(237); + match(STRING); } break; case 12: + { + _localctx = new ExprCharContext(_localctx); + _ctx = _localctx; + _prevctx = _localctx; + setState(238); + match(CHAR); + } + break; + case 13: { _localctx = new ExprBoolContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(268); + setState(239); match(BOOLEAN); } break; } _ctx.stop = _input.LT(-1); - setState(307); + setState(281); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,28,_ctx); + _alt = getInterpreter().adaptivePredict(_input,25,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(305); + setState(279); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,27,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { case 1: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(271); - if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); - setState(272); + setState(242); + if (!(precpred(_ctx, 17))) throw new FailedPredicateException(this, "precpred(_ctx, 17)"); + setState(243); _la = _input.LA(1); - if ( !(_la==T__31 || _la==T__32) ) { + if ( !(_la==T__29 || _la==T__30) ) { _errHandler.recoverInline(this); } else { @@ -2284,19 +2070,19 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(273); - expr(17); + setState(244); + expr(18); } break; case 2: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(274); - if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); - setState(275); + setState(245); + if (!(precpred(_ctx, 16))) throw new FailedPredicateException(this, "precpred(_ctx, 16)"); + setState(246); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__19) | (1L << T__33) | (1L << T__34))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__19) | (1L << T__31) | (1L << T__32))) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -2304,19 +2090,19 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(276); - expr(16); + setState(247); + expr(17); } break; case 3: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(277); - if (!(precpred(_ctx, 14))) throw new FailedPredicateException(this, "precpred(_ctx, 14)"); - setState(278); + setState(248); + if (!(precpred(_ctx, 15))) throw new FailedPredicateException(this, "precpred(_ctx, 15)"); + setState(249); _la = _input.LA(1); - if ( !(_la==T__26 || _la==T__27) ) { + if ( !(_la==T__24 || _la==T__25) ) { _errHandler.recoverInline(this); } else { @@ -2324,19 +2110,19 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(279); - expr(15); + setState(250); + expr(16); } break; case 4: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(280); - if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); - setState(281); + setState(251); + if (!(precpred(_ctx, 13))) throw new FailedPredicateException(this, "precpred(_ctx, 13)"); + setState(252); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__22) | (1L << T__23) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__33) | (1L << T__34) | (1L << T__35) | (1L << T__36) | (1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41))) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -2344,103 +2130,115 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(282); - expr(13); + setState(253); + expr(14); } break; case 5: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(283); - if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); + setState(254); + if (!(precpred(_ctx, 12))) throw new FailedPredicateException(this, "precpred(_ctx, 12)"); { - setState(284); - match(T__29); + setState(255); + match(T__27); } - setState(285); - expr(12); + setState(256); + expr(13); } break; case 6: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(286); - if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); + setState(257); + if (!(precpred(_ctx, 11))) throw new FailedPredicateException(this, "precpred(_ctx, 11)"); { - setState(287); + setState(258); match(T__42); } - setState(288); - expr(11); + setState(259); + expr(12); } break; case 7: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(289); - if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); + setState(260); + if (!(precpred(_ctx, 10))) throw new FailedPredicateException(this, "precpred(_ctx, 10)"); { - setState(290); + setState(261); match(T__43); } - setState(291); - expr(10); + setState(262); + expr(11); } break; case 8: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(292); - if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); + setState(263); + if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); { - setState(293); + setState(264); match(T__44); } - setState(294); - expr(9); + setState(265); + expr(10); } break; case 9: { _localctx = new ExprBinaryContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(295); - if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); + setState(266); + if (!(precpred(_ctx, 8))) throw new FailedPredicateException(this, "precpred(_ctx, 8)"); { - setState(296); + setState(267); match(T__45); } - setState(297); - expr(8); + setState(268); + expr(9); } break; case 10: { - _localctx = new ExprArrayContext(new ExprContext(_parentctx, _parentState)); + _localctx = new ExprAssignmentContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(298); - if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)"); - setState(299); - match(T__20); - setState(300); - expr(0); - setState(301); - match(T__21); + setState(269); + if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); + setState(270); + match(T__7); + setState(271); + expr(7); } break; case 11: + { + _localctx = new ExprArrayContext(new ExprContext(_parentctx, _parentState)); + pushNewRecursionContext(_localctx, _startState, RULE_expr); + setState(272); + if (!(precpred(_ctx, 22))) throw new FailedPredicateException(this, "precpred(_ctx, 22)"); + setState(273); + match(T__20); + setState(274); + expr(0); + setState(275); + match(T__21); + } + break; + case 12: { _localctx = new ExprPostModContext(new ExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_expr); - setState(303); - if (!(precpred(_ctx, 18))) throw new FailedPredicateException(this, "precpred(_ctx, 18)"); - setState(304); + setState(277); + if (!(precpred(_ctx, 20))) throw new FailedPredicateException(this, "precpred(_ctx, 20)"); + setState(278); _la = _input.LA(1); - if ( !(_la==T__24 || _la==T__25) ) { + if ( !(_la==T__22 || _la==T__23) ) { _errHandler.recoverInline(this); } else { @@ -2453,9 +2251,9 @@ public class KickCParser extends Parser { } } } - setState(309); + setState(283); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,28,_ctx); + _alt = getInterpreter().adaptivePredict(_input,25,_ctx); } } } @@ -2498,26 +2296,26 @@ public class KickCParser extends Parser { public final ParameterListContext parameterList() throws RecognitionException { ParameterListContext _localctx = new ParameterListContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_parameterList); + enterRule(_localctx, 30, RULE_parameterList); int _la; try { enterOuterAlt(_localctx, 1); { - setState(310); + setState(284); expr(0); - setState(315); + setState(289); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__5) { { { - setState(311); + setState(285); match(T__5); - setState(312); + setState(286); expr(0); } } - setState(317); + setState(291); _errHandler.sync(this); _la = _input.LA(1); } @@ -2562,22 +2360,22 @@ public class KickCParser extends Parser { public final AsmLinesContext asmLines() throws RecognitionException { AsmLinesContext _localctx = new AsmLinesContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_asmLines); + enterRule(_localctx, 32, RULE_asmLines); int _la; try { enterOuterAlt(_localctx, 1); { - setState(321); + setState(295); _errHandler.sync(this); _la = _input.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__28) | (1L << MNEMONIC) | (1L << NAME))) != 0)) { + while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__26) | (1L << MNEMONIC) | (1L << NAME))) != 0)) { { { - setState(318); + setState(292); asmLine(); } } - setState(323); + setState(297); _errHandler.sync(this); _la = _input.LA(1); } @@ -2622,23 +2420,23 @@ public class KickCParser extends Parser { public final AsmLineContext asmLine() throws RecognitionException { AsmLineContext _localctx = new AsmLineContext(_ctx, getState()); - enterRule(_localctx, 36, RULE_asmLine); + enterRule(_localctx, 34, RULE_asmLine); try { - setState(326); + setState(300); _errHandler.sync(this); switch (_input.LA(1)) { - case T__28: + case T__26: case NAME: enterOuterAlt(_localctx, 1); { - setState(324); + setState(298); asmLabel(); } break; case MNEMONIC: enterOuterAlt(_localctx, 2); { - setState(325); + setState(299); asmInstruction(); } break; @@ -2680,26 +2478,26 @@ public class KickCParser extends Parser { public final AsmLabelContext asmLabel() throws RecognitionException { AsmLabelContext _localctx = new AsmLabelContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_asmLabel); + enterRule(_localctx, 36, RULE_asmLabel); try { - setState(332); + setState(306); _errHandler.sync(this); switch (_input.LA(1)) { case NAME: enterOuterAlt(_localctx, 1); { - setState(328); + setState(302); match(NAME); - setState(329); + setState(303); match(T__16); } break; - case T__28: + case T__26: enterOuterAlt(_localctx, 2); { - setState(330); - match(T__28); - setState(331); + setState(304); + match(T__26); + setState(305); match(T__16); } break; @@ -2744,18 +2542,18 @@ public class KickCParser extends Parser { public final AsmInstructionContext asmInstruction() throws RecognitionException { AsmInstructionContext _localctx = new AsmInstructionContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_asmInstruction); + enterRule(_localctx, 38, RULE_asmInstruction); try { enterOuterAlt(_localctx, 1); { - setState(334); + setState(308); match(MNEMONIC); - setState(336); + setState(310); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,30,_ctx) ) { case 1: { - setState(335); + setState(309); asmParamMode(); } break; @@ -2904,16 +2702,16 @@ public class KickCParser extends Parser { public final AsmParamModeContext asmParamMode() throws RecognitionException { AsmParamModeContext _localctx = new AsmParamModeContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_asmParamMode); + enterRule(_localctx, 40, RULE_asmParamMode); try { - setState(361); + setState(335); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,34,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,31,_ctx) ) { case 1: _localctx = new AsmModeAbsContext(_localctx); enterOuterAlt(_localctx, 1); { - setState(338); + setState(312); asmExpr(0); } break; @@ -2921,9 +2719,9 @@ public class KickCParser extends Parser { _localctx = new AsmModeImmContext(_localctx); enterOuterAlt(_localctx, 2); { - setState(339); + setState(313); match(T__46); - setState(340); + setState(314); asmExpr(0); } break; @@ -2931,11 +2729,11 @@ public class KickCParser extends Parser { _localctx = new AsmModeAbsXYContext(_localctx); enterOuterAlt(_localctx, 3); { - setState(341); + setState(315); asmExpr(0); - setState(342); + setState(316); match(T__5); - setState(343); + setState(317); match(NAME); } break; @@ -2943,15 +2741,15 @@ public class KickCParser extends Parser { _localctx = new AsmModeIndIdxXYContext(_localctx); enterOuterAlt(_localctx, 4); { - setState(345); + setState(319); match(T__1); - setState(346); + setState(320); asmExpr(0); - setState(347); + setState(321); match(T__2); - setState(348); + setState(322); match(T__5); - setState(349); + setState(323); match(NAME); } break; @@ -2959,15 +2757,15 @@ public class KickCParser extends Parser { _localctx = new AsmModeIdxIndXYContext(_localctx); enterOuterAlt(_localctx, 5); { - setState(351); + setState(325); match(T__1); - setState(352); + setState(326); asmExpr(0); - setState(353); + setState(327); match(T__5); - setState(354); + setState(328); match(NAME); - setState(355); + setState(329); match(T__2); } break; @@ -2975,11 +2773,11 @@ public class KickCParser extends Parser { _localctx = new AsmModeIndContext(_localctx); enterOuterAlt(_localctx, 6); { - setState(357); + setState(331); match(T__1); - setState(358); + setState(332); asmExpr(0); - setState(359); + setState(333); match(T__2); } break; @@ -3143,28 +2941,28 @@ public class KickCParser extends Parser { int _parentState = getState(); AsmExprContext _localctx = new AsmExprContext(_ctx, _parentState); AsmExprContext _prevctx = _localctx; - int _startState = 44; - enterRecursionRule(_localctx, 44, RULE_asmExpr, _p); + int _startState = 42; + enterRecursionRule(_localctx, 42, RULE_asmExpr, _p); int _la; try { int _alt; enterOuterAlt(_localctx, 1); { - setState(373); + setState(347); _errHandler.sync(this); switch (_input.LA(1)) { - case T__22: - case T__23: - case T__26: - case T__27: + case T__24: + case T__25: + case T__33: + case T__34: { _localctx = new AsmExprUnaryContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(364); + setState(338); _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__22) | (1L << T__23) | (1L << T__26) | (1L << T__27))) != 0)) ) { + if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__24) | (1L << T__25) | (1L << T__33) | (1L << T__34))) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -3172,7 +2970,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(365); + setState(339); asmExpr(8); } break; @@ -3181,7 +2979,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprLabelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(366); + setState(340); match(NAME); } break; @@ -3190,7 +2988,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprLabelRelContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(367); + setState(341); match(ASMREL); } break; @@ -3199,11 +2997,11 @@ public class KickCParser extends Parser { _localctx = new AsmExprReplaceContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(368); + setState(342); match(T__3); - setState(369); + setState(343); match(NAME); - setState(370); + setState(344); match(T__4); } break; @@ -3212,7 +3010,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprIntContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(371); + setState(345); match(NUMBER); } break; @@ -3221,7 +3019,7 @@ public class KickCParser extends Parser { _localctx = new AsmExprCharContext(_localctx); _ctx = _localctx; _prevctx = _localctx; - setState(372); + setState(346); match(CHAR); } break; @@ -3229,26 +3027,26 @@ public class KickCParser extends Parser { throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); - setState(383); + setState(357); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,37,_ctx); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(381); + setState(355); _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { + switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { case 1: { _localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_asmExpr); - setState(375); + setState(349); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(376); + setState(350); _la = _input.LA(1); - if ( !(_la==T__19 || _la==T__33) ) { + if ( !(_la==T__19 || _la==T__31) ) { _errHandler.recoverInline(this); } else { @@ -3256,7 +3054,7 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(377); + setState(351); asmExpr(8); } break; @@ -3264,11 +3062,11 @@ public class KickCParser extends Parser { { _localctx = new AsmExprBinaryContext(new AsmExprContext(_parentctx, _parentState)); pushNewRecursionContext(_localctx, _startState, RULE_asmExpr); - setState(378); + setState(352); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(379); + setState(353); _la = _input.LA(1); - if ( !(_la==T__26 || _la==T__27) ) { + if ( !(_la==T__24 || _la==T__25) ) { _errHandler.recoverInline(this); } else { @@ -3276,16 +3074,16 @@ public class KickCParser extends Parser { _errHandler.reportMatch(this); consume(); } - setState(380); + setState(354); asmExpr(7); } break; } } } - setState(385); + setState(359); _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,37,_ctx); + _alt = getInterpreter().adaptivePredict(_input,34,_ctx); } } } @@ -3305,10 +3103,8 @@ public class KickCParser extends Parser { case 13: return typeDecl_sempred((TypeDeclContext)_localctx, predIndex); case 14: - return lvalue_sempred((LvalueContext)_localctx, predIndex); - case 15: return expr_sempred((ExprContext)_localctx, predIndex); - case 22: + case 21: return asmExpr_sempred((AsmExprContext)_localctx, predIndex); } return true; @@ -3322,21 +3118,16 @@ public class KickCParser extends Parser { } return true; } - private boolean lvalue_sempred(LvalueContext _localctx, int predIndex) { - switch (predIndex) { - case 2: - return precpred(_ctx, 1); - } - return true; - } private boolean expr_sempred(ExprContext _localctx, int predIndex) { switch (predIndex) { + case 2: + return precpred(_ctx, 17); case 3: return precpred(_ctx, 16); case 4: return precpred(_ctx, 15); case 5: - return precpred(_ctx, 14); + return precpred(_ctx, 13); case 6: return precpred(_ctx, 12); case 7: @@ -3350,9 +3141,9 @@ public class KickCParser extends Parser { case 11: return precpred(_ctx, 7); case 12: - return precpred(_ctx, 20); + return precpred(_ctx, 22); case 13: - return precpred(_ctx, 18); + return precpred(_ctx, 20); } return true; } @@ -3367,152 +3158,142 @@ public class KickCParser extends Parser { } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3D\u0185\4\2\t\2\4"+ + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3D\u016b\4\2\t\2\4"+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ - "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\3\2\3\2\3"+ - "\2\3\2\3\3\3\3\3\3\3\4\7\49\n\4\f\4\16\4<\13\4\3\5\3\5\3\5\3\6\6\6B\n"+ - "\6\r\6\16\6C\3\7\3\7\3\7\3\7\5\7J\n\7\3\7\3\7\3\7\5\7O\n\7\3\7\3\7\3\7"+ - "\5\7T\n\7\3\b\3\b\3\b\7\bY\n\b\f\b\16\b\\\13\b\3\t\3\t\3\t\3\n\5\nb\n"+ - "\n\3\n\3\n\3\n\3\n\5\nh\n\n\3\n\3\n\3\13\6\13m\n\13\r\13\16\13n\3\f\3"+ - "\f\3\f\5\ft\n\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3"+ - "\f\3\f\3\f\5\f\u0086\n\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3"+ - "\f\3\f\3\f\3\f\3\f\3\f\5\f\u0099\n\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u00a1"+ - "\n\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u00a9\n\f\3\r\5\r\u00ac\n\r\3\r\3\r\3"+ - "\r\5\r\u00b1\n\r\3\16\3\16\3\16\3\16\5\16\u00b7\n\16\3\16\3\16\3\16\3"+ - "\16\3\16\5\16\u00be\n\16\3\17\3\17\3\17\3\17\5\17\u00c4\n\17\3\17\3\17"+ - "\3\17\3\17\3\17\5\17\u00cb\n\17\3\17\7\17\u00ce\n\17\f\17\16\17\u00d1"+ - "\13\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00de"+ - "\n\20\3\20\3\20\3\20\3\20\3\20\7\20\u00e5\n\20\f\20\16\20\u00e8\13\20"+ - "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u00f2\n\21\3\21\3\21\3\21"+ - "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21"+ - "\u0104\n\21\f\21\16\21\u0107\13\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ - "\5\21\u0110\n\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ - "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21"+ - "\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21\7\21\u0134\n\21\f\21\16"+ - "\21\u0137\13\21\3\22\3\22\3\22\7\22\u013c\n\22\f\22\16\22\u013f\13\22"+ - "\3\23\7\23\u0142\n\23\f\23\16\23\u0145\13\23\3\24\3\24\5\24\u0149\n\24"+ - "\3\25\3\25\3\25\3\25\5\25\u014f\n\25\3\26\3\26\5\26\u0153\n\26\3\27\3"+ - "\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3"+ - "\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\5\27\u016c\n\27\3\30\3\30\3\30"+ - "\3\30\3\30\3\30\3\30\3\30\3\30\3\30\5\30\u0178\n\30\3\30\3\30\3\30\3\30"+ - "\3\30\3\30\7\30\u0180\n\30\f\30\16\30\u0183\13\30\3\30\2\6\34\36 .\31"+ - "\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\2\13\3\2\31\32\3\2\33"+ - "\34\4\2\26\26\35!\3\2\"#\4\2\26\26$%\3\2\35\36\4\2\31\32&,\4\2\31\32\35"+ - "\36\4\2\26\26$$\2\u01b8\2\60\3\2\2\2\4\64\3\2\2\2\6:\3\2\2\2\b=\3\2\2"+ - "\2\nA\3\2\2\2\fS\3\2\2\2\16U\3\2\2\2\20]\3\2\2\2\22a\3\2\2\2\24l\3\2\2"+ - "\2\26\u00a8\3\2\2\2\30\u00ab\3\2\2\2\32\u00bd\3\2\2\2\34\u00c3\3\2\2\2"+ - "\36\u00dd\3\2\2\2 \u010f\3\2\2\2\"\u0138\3\2\2\2$\u0143\3\2\2\2&\u0148"+ - "\3\2\2\2(\u014e\3\2\2\2*\u0150\3\2\2\2,\u016b\3\2\2\2.\u0177\3\2\2\2\60"+ - "\61\5\6\4\2\61\62\5\n\6\2\62\63\7\2\2\3\63\3\3\2\2\2\64\65\5$\23\2\65"+ - "\66\7\2\2\3\66\5\3\2\2\2\679\5\b\5\28\67\3\2\2\29<\3\2\2\2:8\3\2\2\2:"+ - ";\3\2\2\2;\7\3\2\2\2<:\3\2\2\2=>\7\3\2\2>?\7\64\2\2?\t\3\2\2\2@B\5\f\7"+ - "\2A@\3\2\2\2BC\3\2\2\2CA\3\2\2\2CD\3\2\2\2D\13\3\2\2\2EF\5\34\17\2FG\7"+ - "@\2\2GI\7\4\2\2HJ\5\16\b\2IH\3\2\2\2IJ\3\2\2\2JK\3\2\2\2KL\7\5\2\2LN\7"+ - "\6\2\2MO\5\24\13\2NM\3\2\2\2NO\3\2\2\2OP\3\2\2\2PQ\7\7\2\2QT\3\2\2\2R"+ - "T\5\22\n\2SE\3\2\2\2SR\3\2\2\2T\r\3\2\2\2UZ\5\20\t\2VW\7\b\2\2WY\5\20"+ - "\t\2XV\3\2\2\2Y\\\3\2\2\2ZX\3\2\2\2Z[\3\2\2\2[\17\3\2\2\2\\Z\3\2\2\2]"+ - "^\5\34\17\2^_\7@\2\2_\21\3\2\2\2`b\7\t\2\2a`\3\2\2\2ab\3\2\2\2bc\3\2\2"+ - "\2cd\5\34\17\2dg\7@\2\2ef\7\n\2\2fh\5 \21\2ge\3\2\2\2gh\3\2\2\2hi\3\2"+ - "\2\2ij\7\13\2\2j\23\3\2\2\2km\5\26\f\2lk\3\2\2\2mn\3\2\2\2nl\3\2\2\2n"+ - "o\3\2\2\2o\25\3\2\2\2p\u00a9\5\22\n\2qs\7\6\2\2rt\5\24\13\2sr\3\2\2\2"+ - "st\3\2\2\2tu\3\2\2\2u\u00a9\7\7\2\2vw\5\36\20\2wx\7\n\2\2xy\5 \21\2yz"+ - "\7\13\2\2z\u00a9\3\2\2\2{|\5 \21\2|}\7\13\2\2}\u00a9\3\2\2\2~\177\7\f"+ - "\2\2\177\u0080\7\4\2\2\u0080\u0081\5 \21\2\u0081\u0082\7\5\2\2\u0082\u0085"+ - "\5\26\f\2\u0083\u0084\7\r\2\2\u0084\u0086\5\26\f\2\u0085\u0083\3\2\2\2"+ - "\u0085\u0086\3\2\2\2\u0086\u00a9\3\2\2\2\u0087\u0088\7\16\2\2\u0088\u0089"+ - "\7\4\2\2\u0089\u008a\5 \21\2\u008a\u008b\7\5\2\2\u008b\u008c\5\26\f\2"+ - "\u008c\u00a9\3\2\2\2\u008d\u008e\7\17\2\2\u008e\u008f\5\26\f\2\u008f\u0090"+ - "\7\16\2\2\u0090\u0091\7\4\2\2\u0091\u0092\5 \21\2\u0092\u0093\7\5\2\2"+ - "\u0093\u0094\7\13\2\2\u0094\u00a9\3\2\2\2\u0095\u0096\7\20\2\2\u0096\u0098"+ - "\7\4\2\2\u0097\u0099\5\30\r\2\u0098\u0097\3\2\2\2\u0098\u0099\3\2\2\2"+ - "\u0099\u009a\3\2\2\2\u009a\u009b\5\32\16\2\u009b\u009c\7\5\2\2\u009c\u009d"+ - "\5\26\f\2\u009d\u00a9\3\2\2\2\u009e\u00a0\7\21\2\2\u009f\u00a1\5 \21\2"+ - "\u00a0\u009f\3\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\u00a2\3\2\2\2\u00a2\u00a9"+ - "\7\13\2\2\u00a3\u00a4\7\22\2\2\u00a4\u00a5\7\6\2\2\u00a5\u00a6\5$\23\2"+ - "\u00a6\u00a7\7\7\2\2\u00a7\u00a9\3\2\2\2\u00a8p\3\2\2\2\u00a8q\3\2\2\2"+ - "\u00a8v\3\2\2\2\u00a8{\3\2\2\2\u00a8~\3\2\2\2\u00a8\u0087\3\2\2\2\u00a8"+ - "\u008d\3\2\2\2\u00a8\u0095\3\2\2\2\u00a8\u009e\3\2\2\2\u00a8\u00a3\3\2"+ - "\2\2\u00a9\27\3\2\2\2\u00aa\u00ac\5\34\17\2\u00ab\u00aa\3\2\2\2\u00ab"+ - "\u00ac\3\2\2\2\u00ac\u00ad\3\2\2\2\u00ad\u00b0\7@\2\2\u00ae\u00af\7\n"+ - "\2\2\u00af\u00b1\5 \21\2\u00b0\u00ae\3\2\2\2\u00b0\u00b1\3\2\2\2\u00b1"+ - "\31\3\2\2\2\u00b2\u00b3\7\13\2\2\u00b3\u00b4\5 \21\2\u00b4\u00b6\7\13"+ - "\2\2\u00b5\u00b7\5 \21\2\u00b6\u00b5\3\2\2\2\u00b6\u00b7\3\2\2\2\u00b7"+ - "\u00be\3\2\2\2\u00b8\u00b9\7\23\2\2\u00b9\u00ba\5 \21\2\u00ba\u00bb\7"+ - "\24\2\2\u00bb\u00bc\5 \21\2\u00bc\u00be\3\2\2\2\u00bd\u00b2\3\2\2\2\u00bd"+ - "\u00b8\3\2\2\2\u00be\33\3\2\2\2\u00bf\u00c0\b\17\1\2\u00c0\u00c4\7\63"+ - "\2\2\u00c1\u00c2\7\25\2\2\u00c2\u00c4\7\63\2\2\u00c3\u00bf\3\2\2\2\u00c3"+ - "\u00c1\3\2\2\2\u00c4\u00cf\3\2\2\2\u00c5\u00c6\f\4\2\2\u00c6\u00ce\7\26"+ - "\2\2\u00c7\u00c8\f\3\2\2\u00c8\u00ca\7\27\2\2\u00c9\u00cb\5 \21\2\u00ca"+ - "\u00c9\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00ce\7\30"+ - "\2\2\u00cd\u00c5\3\2\2\2\u00cd\u00c7\3\2\2\2\u00ce\u00d1\3\2\2\2\u00cf"+ - "\u00cd\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0\35\3\2\2\2\u00d1\u00cf\3\2\2"+ - "\2\u00d2\u00d3\b\20\1\2\u00d3\u00de\7@\2\2\u00d4\u00d5\7\26\2\2\u00d5"+ - "\u00de\7@\2\2\u00d6\u00d7\7\26\2\2\u00d7\u00d8\7\4\2\2\u00d8\u00d9\5 "+ - "\21\2\u00d9\u00da\7\5\2\2\u00da\u00de\3\2\2\2\u00db\u00dc\t\2\2\2\u00dc"+ - "\u00de\5\36\20\4\u00dd\u00d2\3\2\2\2\u00dd\u00d4\3\2\2\2\u00dd\u00d6\3"+ - "\2\2\2\u00dd\u00db\3\2\2\2\u00de\u00e6\3\2\2\2\u00df\u00e0\f\3\2\2\u00e0"+ - "\u00e1\7\27\2\2\u00e1\u00e2\5 \21\2\u00e2\u00e3\7\30\2\2\u00e3\u00e5\3"+ - "\2\2\2\u00e4\u00df\3\2\2\2\u00e5\u00e8\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e6"+ - "\u00e7\3\2\2\2\u00e7\37\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e9\u00ea\b\21\1"+ - "\2\u00ea\u00eb\7\4\2\2\u00eb\u00ec\5 \21\2\u00ec\u00ed\7\5\2\2\u00ed\u0110"+ - "\3\2\2\2\u00ee\u00ef\7@\2\2\u00ef\u00f1\7\4\2\2\u00f0\u00f2\5\"\22\2\u00f1"+ - "\u00f0\3\2\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f3\3\2\2\2\u00f3\u0110\7\5"+ - "\2\2\u00f4\u00f5\7\4\2\2\u00f5\u00f6\5\34\17\2\u00f6\u00f7\7\5\2\2\u00f7"+ - "\u00f8\5 \21\27\u00f8\u0110\3\2\2\2\u00f9\u00fa\t\3\2\2\u00fa\u0110\5"+ - " \21\25\u00fb\u00fc\t\4\2\2\u00fc\u0110\5 \21\23\u00fd\u00fe\t\2\2\2\u00fe"+ - "\u0110\5 \21\17\u00ff\u0100\7\6\2\2\u0100\u0105\5 \21\2\u0101\u0102\7"+ - "\b\2\2\u0102\u0104\5 \21\2\u0103\u0101\3\2\2\2\u0104\u0107\3\2\2\2\u0105"+ - "\u0103\3\2\2\2\u0105\u0106\3\2\2\2\u0106\u0108\3\2\2\2\u0107\u0105\3\2"+ - "\2\2\u0108\u0109\7\7\2\2\u0109\u0110\3\2\2\2\u010a\u0110\7@\2\2\u010b"+ - "\u0110\7\67\2\2\u010c\u0110\7\64\2\2\u010d\u0110\7\65\2\2\u010e\u0110"+ - "\7\66\2\2\u010f\u00e9\3\2\2\2\u010f\u00ee\3\2\2\2\u010f\u00f4\3\2\2\2"+ - "\u010f\u00f9\3\2\2\2\u010f\u00fb\3\2\2\2\u010f\u00fd\3\2\2\2\u010f\u00ff"+ - "\3\2\2\2\u010f\u010a\3\2\2\2\u010f\u010b\3\2\2\2\u010f\u010c\3\2\2\2\u010f"+ - "\u010d\3\2\2\2\u010f\u010e\3\2\2\2\u0110\u0135\3\2\2\2\u0111\u0112\f\22"+ - "\2\2\u0112\u0113\t\5\2\2\u0113\u0134\5 \21\23\u0114\u0115\f\21\2\2\u0115"+ - "\u0116\t\6\2\2\u0116\u0134\5 \21\22\u0117\u0118\f\20\2\2\u0118\u0119\t"+ - "\7\2\2\u0119\u0134\5 \21\21\u011a\u011b\f\16\2\2\u011b\u011c\t\b\2\2\u011c"+ - "\u0134\5 \21\17\u011d\u011e\f\r\2\2\u011e\u011f\7 \2\2\u011f\u0134\5 "+ - "\21\16\u0120\u0121\f\f\2\2\u0121\u0122\7-\2\2\u0122\u0134\5 \21\r\u0123"+ - "\u0124\f\13\2\2\u0124\u0125\7.\2\2\u0125\u0134\5 \21\f\u0126\u0127\f\n"+ - "\2\2\u0127\u0128\7/\2\2\u0128\u0134\5 \21\13\u0129\u012a\f\t\2\2\u012a"+ - "\u012b\7\60\2\2\u012b\u0134\5 \21\n\u012c\u012d\f\26\2\2\u012d\u012e\7"+ - "\27\2\2\u012e\u012f\5 \21\2\u012f\u0130\7\30\2\2\u0130\u0134\3\2\2\2\u0131"+ - "\u0132\f\24\2\2\u0132\u0134\t\3\2\2\u0133\u0111\3\2\2\2\u0133\u0114\3"+ - "\2\2\2\u0133\u0117\3\2\2\2\u0133\u011a\3\2\2\2\u0133\u011d\3\2\2\2\u0133"+ - "\u0120\3\2\2\2\u0133\u0123\3\2\2\2\u0133\u0126\3\2\2\2\u0133\u0129\3\2"+ - "\2\2\u0133\u012c\3\2\2\2\u0133\u0131\3\2\2\2\u0134\u0137\3\2\2\2\u0135"+ - "\u0133\3\2\2\2\u0135\u0136\3\2\2\2\u0136!\3\2\2\2\u0137\u0135\3\2\2\2"+ - "\u0138\u013d\5 \21\2\u0139\u013a\7\b\2\2\u013a\u013c\5 \21\2\u013b\u0139"+ - "\3\2\2\2\u013c\u013f\3\2\2\2\u013d\u013b\3\2\2\2\u013d\u013e\3\2\2\2\u013e"+ - "#\3\2\2\2\u013f\u013d\3\2\2\2\u0140\u0142\5&\24\2\u0141\u0140\3\2\2\2"+ - "\u0142\u0145\3\2\2\2\u0143\u0141\3\2\2\2\u0143\u0144\3\2\2\2\u0144%\3"+ - "\2\2\2\u0145\u0143\3\2\2\2\u0146\u0149\5(\25\2\u0147\u0149\5*\26\2\u0148"+ - "\u0146\3\2\2\2\u0148\u0147\3\2\2\2\u0149\'\3\2\2\2\u014a\u014b\7@\2\2"+ - "\u014b\u014f\7\23\2\2\u014c\u014d\7\37\2\2\u014d\u014f\7\23\2\2\u014e"+ - "\u014a\3\2\2\2\u014e\u014c\3\2\2\2\u014f)\3\2\2\2\u0150\u0152\7\62\2\2"+ - "\u0151\u0153\5,\27\2\u0152\u0151\3\2\2\2\u0152\u0153\3\2\2\2\u0153+\3"+ - "\2\2\2\u0154\u016c\5.\30\2\u0155\u0156\7\61\2\2\u0156\u016c\5.\30\2\u0157"+ - "\u0158\5.\30\2\u0158\u0159\7\b\2\2\u0159\u015a\7@\2\2\u015a\u016c\3\2"+ - "\2\2\u015b\u015c\7\4\2\2\u015c\u015d\5.\30\2\u015d\u015e\7\5\2\2\u015e"+ - "\u015f\7\b\2\2\u015f\u0160\7@\2\2\u0160\u016c\3\2\2\2\u0161\u0162\7\4"+ - "\2\2\u0162\u0163\5.\30\2\u0163\u0164\7\b\2\2\u0164\u0165\7@\2\2\u0165"+ - "\u0166\7\5\2\2\u0166\u016c\3\2\2\2\u0167\u0168\7\4\2\2\u0168\u0169\5."+ - "\30\2\u0169\u016a\7\5\2\2\u016a\u016c\3\2\2\2\u016b\u0154\3\2\2\2\u016b"+ - "\u0155\3\2\2\2\u016b\u0157\3\2\2\2\u016b\u015b\3\2\2\2\u016b\u0161\3\2"+ - "\2\2\u016b\u0167\3\2\2\2\u016c-\3\2\2\2\u016d\u016e\b\30\1\2\u016e\u016f"+ - "\t\t\2\2\u016f\u0178\5.\30\n\u0170\u0178\7@\2\2\u0171\u0178\7A\2\2\u0172"+ - "\u0173\7\6\2\2\u0173\u0174\7@\2\2\u0174\u0178\7\7\2\2\u0175\u0178\7\67"+ - "\2\2\u0176\u0178\7\65\2\2\u0177\u016d\3\2\2\2\u0177\u0170\3\2\2\2\u0177"+ - "\u0171\3\2\2\2\u0177\u0172\3\2\2\2\u0177\u0175\3\2\2\2\u0177\u0176\3\2"+ - "\2\2\u0178\u0181\3\2\2\2\u0179\u017a\f\t\2\2\u017a\u017b\t\n\2\2\u017b"+ - "\u0180\5.\30\n\u017c\u017d\f\b\2\2\u017d\u017e\t\7\2\2\u017e\u0180\5."+ - "\30\t\u017f\u0179\3\2\2\2\u017f\u017c\3\2\2\2\u0180\u0183\3\2\2\2\u0181"+ - "\u017f\3\2\2\2\u0181\u0182\3\2\2\2\u0182/\3\2\2\2\u0183\u0181\3\2\2\2"+ - "(:CINSZagns\u0085\u0098\u00a0\u00a8\u00ab\u00b0\u00b6\u00bd\u00c3\u00ca"+ - "\u00cd\u00cf\u00dd\u00e6\u00f1\u0105\u010f\u0133\u0135\u013d\u0143\u0148"+ - "\u014e\u0152\u016b\u0177\u017f\u0181"; + "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\3\2\3\2\3\2\3\2\3\3"+ + "\3\3\3\3\3\4\7\4\67\n\4\f\4\16\4:\13\4\3\5\3\5\3\5\3\6\6\6@\n\6\r\6\16"+ + "\6A\3\7\3\7\3\7\3\7\5\7H\n\7\3\7\3\7\3\7\5\7M\n\7\3\7\3\7\3\7\5\7R\n\7"+ + "\3\b\3\b\3\b\7\bW\n\b\f\b\16\bZ\13\b\3\t\3\t\3\t\3\n\5\n`\n\n\3\n\3\n"+ + "\3\n\3\n\5\nf\n\n\3\n\3\n\3\13\6\13k\n\13\r\13\16\13l\3\f\3\f\3\f\5\f"+ + "r\n\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\177\n\f\3\f\3\f"+ + "\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u0092"+ + "\n\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f\u009a\n\f\3\f\3\f\3\f\3\f\3\f\3\f\5\f"+ + "\u00a2\n\f\3\r\5\r\u00a5\n\r\3\r\3\r\3\r\5\r\u00aa\n\r\3\16\3\16\3\16"+ + "\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u00b6\n\16\3\17\3\17\3\17\3\17"+ + "\5\17\u00bc\n\17\3\17\3\17\3\17\3\17\3\17\5\17\u00c3\n\17\3\17\7\17\u00c6"+ + "\n\17\f\17\16\17\u00c9\13\17\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5"+ + "\20\u00d3\n\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ + "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\7\20\u00e7\n\20\f\20\16\20\u00ea\13"+ + "\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00f3\n\20\3\20\3\20\3\20"+ + "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ + "\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20"+ + "\3\20\3\20\3\20\3\20\3\20\3\20\7\20\u011a\n\20\f\20\16\20\u011d\13\20"+ + "\3\21\3\21\3\21\7\21\u0122\n\21\f\21\16\21\u0125\13\21\3\22\7\22\u0128"+ + "\n\22\f\22\16\22\u012b\13\22\3\23\3\23\5\23\u012f\n\23\3\24\3\24\3\24"+ + "\3\24\5\24\u0135\n\24\3\25\3\25\5\25\u0139\n\25\3\26\3\26\3\26\3\26\3"+ + "\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3"+ + "\26\3\26\3\26\3\26\3\26\5\26\u0152\n\26\3\27\3\27\3\27\3\27\3\27\3\27"+ + "\3\27\3\27\3\27\3\27\5\27\u015e\n\27\3\27\3\27\3\27\3\27\3\27\3\27\7\27"+ + "\u0166\n\27\f\27\16\27\u0169\13\27\3\27\2\5\34\36,\30\2\4\6\b\n\f\16\20"+ + "\22\24\26\30\32\34\36 \"$&(*,\2\13\3\2\31\32\3\2\33\37\3\2$%\3\2 !\4\2"+ + "\26\26\"#\3\2\33\34\3\2$,\4\2\33\34$%\4\2\26\26\"\"\2\u019b\2.\3\2\2\2"+ + "\4\62\3\2\2\2\68\3\2\2\2\b;\3\2\2\2\n?\3\2\2\2\fQ\3\2\2\2\16S\3\2\2\2"+ + "\20[\3\2\2\2\22_\3\2\2\2\24j\3\2\2\2\26\u00a1\3\2\2\2\30\u00a4\3\2\2\2"+ + "\32\u00b5\3\2\2\2\34\u00bb\3\2\2\2\36\u00f2\3\2\2\2 \u011e\3\2\2\2\"\u0129"+ + "\3\2\2\2$\u012e\3\2\2\2&\u0134\3\2\2\2(\u0136\3\2\2\2*\u0151\3\2\2\2,"+ + "\u015d\3\2\2\2./\5\6\4\2/\60\5\n\6\2\60\61\7\2\2\3\61\3\3\2\2\2\62\63"+ + "\5\"\22\2\63\64\7\2\2\3\64\5\3\2\2\2\65\67\5\b\5\2\66\65\3\2\2\2\67:\3"+ + "\2\2\28\66\3\2\2\289\3\2\2\29\7\3\2\2\2:8\3\2\2\2;<\7\3\2\2<=\7\64\2\2"+ + "=\t\3\2\2\2>@\5\f\7\2?>\3\2\2\2@A\3\2\2\2A?\3\2\2\2AB\3\2\2\2B\13\3\2"+ + "\2\2CD\5\34\17\2DE\7@\2\2EG\7\4\2\2FH\5\16\b\2GF\3\2\2\2GH\3\2\2\2HI\3"+ + "\2\2\2IJ\7\5\2\2JL\7\6\2\2KM\5\24\13\2LK\3\2\2\2LM\3\2\2\2MN\3\2\2\2N"+ + "O\7\7\2\2OR\3\2\2\2PR\5\22\n\2QC\3\2\2\2QP\3\2\2\2R\r\3\2\2\2SX\5\20\t"+ + "\2TU\7\b\2\2UW\5\20\t\2VT\3\2\2\2WZ\3\2\2\2XV\3\2\2\2XY\3\2\2\2Y\17\3"+ + "\2\2\2ZX\3\2\2\2[\\\5\34\17\2\\]\7@\2\2]\21\3\2\2\2^`\7\t\2\2_^\3\2\2"+ + "\2_`\3\2\2\2`a\3\2\2\2ab\5\34\17\2be\7@\2\2cd\7\n\2\2df\5\36\20\2ec\3"+ + "\2\2\2ef\3\2\2\2fg\3\2\2\2gh\7\13\2\2h\23\3\2\2\2ik\5\26\f\2ji\3\2\2\2"+ + "kl\3\2\2\2lj\3\2\2\2lm\3\2\2\2m\25\3\2\2\2n\u00a2\5\22\n\2oq\7\6\2\2p"+ + "r\5\24\13\2qp\3\2\2\2qr\3\2\2\2rs\3\2\2\2s\u00a2\7\7\2\2tu\5\36\20\2u"+ + "v\7\13\2\2v\u00a2\3\2\2\2wx\7\f\2\2xy\7\4\2\2yz\5\36\20\2z{\7\5\2\2{~"+ + "\5\26\f\2|}\7\r\2\2}\177\5\26\f\2~|\3\2\2\2~\177\3\2\2\2\177\u00a2\3\2"+ + "\2\2\u0080\u0081\7\16\2\2\u0081\u0082\7\4\2\2\u0082\u0083\5\36\20\2\u0083"+ + "\u0084\7\5\2\2\u0084\u0085\5\26\f\2\u0085\u00a2\3\2\2\2\u0086\u0087\7"+ + "\17\2\2\u0087\u0088\5\26\f\2\u0088\u0089\7\16\2\2\u0089\u008a\7\4\2\2"+ + "\u008a\u008b\5\36\20\2\u008b\u008c\7\5\2\2\u008c\u008d\7\13\2\2\u008d"+ + "\u00a2\3\2\2\2\u008e\u008f\7\20\2\2\u008f\u0091\7\4\2\2\u0090\u0092\5"+ + "\30\r\2\u0091\u0090\3\2\2\2\u0091\u0092\3\2\2\2\u0092\u0093\3\2\2\2\u0093"+ + "\u0094\5\32\16\2\u0094\u0095\7\5\2\2\u0095\u0096\5\26\f\2\u0096\u00a2"+ + "\3\2\2\2\u0097\u0099\7\21\2\2\u0098\u009a\5\36\20\2\u0099\u0098\3\2\2"+ + "\2\u0099\u009a\3\2\2\2\u009a\u009b\3\2\2\2\u009b\u00a2\7\13\2\2\u009c"+ + "\u009d\7\22\2\2\u009d\u009e\7\6\2\2\u009e\u009f\5\"\22\2\u009f\u00a0\7"+ + "\7\2\2\u00a0\u00a2\3\2\2\2\u00a1n\3\2\2\2\u00a1o\3\2\2\2\u00a1t\3\2\2"+ + "\2\u00a1w\3\2\2\2\u00a1\u0080\3\2\2\2\u00a1\u0086\3\2\2\2\u00a1\u008e"+ + "\3\2\2\2\u00a1\u0097\3\2\2\2\u00a1\u009c\3\2\2\2\u00a2\27\3\2\2\2\u00a3"+ + "\u00a5\5\34\17\2\u00a4\u00a3\3\2\2\2\u00a4\u00a5\3\2\2\2\u00a5\u00a6\3"+ + "\2\2\2\u00a6\u00a9\7@\2\2\u00a7\u00a8\7\n\2\2\u00a8\u00aa\5\36\20\2\u00a9"+ + "\u00a7\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\31\3\2\2\2\u00ab\u00ac\7\13\2"+ + "\2\u00ac\u00ad\5\36\20\2\u00ad\u00ae\7\13\2\2\u00ae\u00af\5\36\20\2\u00af"+ + "\u00b6\3\2\2\2\u00b0\u00b1\7\23\2\2\u00b1\u00b2\5\36\20\2\u00b2\u00b3"+ + "\7\24\2\2\u00b3\u00b4\5\36\20\2\u00b4\u00b6\3\2\2\2\u00b5\u00ab\3\2\2"+ + "\2\u00b5\u00b0\3\2\2\2\u00b6\33\3\2\2\2\u00b7\u00b8\b\17\1\2\u00b8\u00bc"+ + "\7\63\2\2\u00b9\u00ba\7\25\2\2\u00ba\u00bc\7\63\2\2\u00bb\u00b7\3\2\2"+ + "\2\u00bb\u00b9\3\2\2\2\u00bc\u00c7\3\2\2\2\u00bd\u00be\f\4\2\2\u00be\u00c6"+ + "\7\26\2\2\u00bf\u00c0\f\3\2\2\u00c0\u00c2\7\27\2\2\u00c1\u00c3\5\36\20"+ + "\2\u00c2\u00c1\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c4\u00c6"+ + "\7\30\2\2\u00c5\u00bd\3\2\2\2\u00c5\u00bf\3\2\2\2\u00c6\u00c9\3\2\2\2"+ + "\u00c7\u00c5\3\2\2\2\u00c7\u00c8\3\2\2\2\u00c8\35\3\2\2\2\u00c9\u00c7"+ + "\3\2\2\2\u00ca\u00cb\b\20\1\2\u00cb\u00cc\7\4\2\2\u00cc\u00cd\5\36\20"+ + "\2\u00cd\u00ce\7\5\2\2\u00ce\u00f3\3\2\2\2\u00cf\u00d0\7@\2\2\u00d0\u00d2"+ + "\7\4\2\2\u00d1\u00d3\5 \21\2\u00d2\u00d1\3\2\2\2\u00d2\u00d3\3\2\2\2\u00d3"+ + "\u00d4\3\2\2\2\u00d4\u00f3\7\5\2\2\u00d5\u00d6\7\4\2\2\u00d6\u00d7\5\34"+ + "\17\2\u00d7\u00d8\7\5\2\2\u00d8\u00d9\5\36\20\31\u00d9\u00f3\3\2\2\2\u00da"+ + "\u00db\t\2\2\2\u00db\u00f3\5\36\20\27\u00dc\u00dd\7\26\2\2\u00dd\u00f3"+ + "\5\36\20\25\u00de\u00df\t\3\2\2\u00df\u00f3\5\36\20\24\u00e0\u00e1\t\4"+ + "\2\2\u00e1\u00f3\5\36\20\20\u00e2\u00e3\7\6\2\2\u00e3\u00e8\5\36\20\2"+ + "\u00e4\u00e5\7\b\2\2\u00e5\u00e7\5\36\20\2\u00e6\u00e4\3\2\2\2\u00e7\u00ea"+ + "\3\2\2\2\u00e8\u00e6\3\2\2\2\u00e8\u00e9\3\2\2\2\u00e9\u00eb\3\2\2\2\u00ea"+ + "\u00e8\3\2\2\2\u00eb\u00ec\7\7\2\2\u00ec\u00f3\3\2\2\2\u00ed\u00f3\7@"+ + "\2\2\u00ee\u00f3\7\67\2\2\u00ef\u00f3\7\64\2\2\u00f0\u00f3\7\65\2\2\u00f1"+ + "\u00f3\7\66\2\2\u00f2\u00ca\3\2\2\2\u00f2\u00cf\3\2\2\2\u00f2\u00d5\3"+ + "\2\2\2\u00f2\u00da\3\2\2\2\u00f2\u00dc\3\2\2\2\u00f2\u00de\3\2\2\2\u00f2"+ + "\u00e0\3\2\2\2\u00f2\u00e2\3\2\2\2\u00f2\u00ed\3\2\2\2\u00f2\u00ee\3\2"+ + "\2\2\u00f2\u00ef\3\2\2\2\u00f2\u00f0\3\2\2\2\u00f2\u00f1\3\2\2\2\u00f3"+ + "\u011b\3\2\2\2\u00f4\u00f5\f\23\2\2\u00f5\u00f6\t\5\2\2\u00f6\u011a\5"+ + "\36\20\24\u00f7\u00f8\f\22\2\2\u00f8\u00f9\t\6\2\2\u00f9\u011a\5\36\20"+ + "\23\u00fa\u00fb\f\21\2\2\u00fb\u00fc\t\7\2\2\u00fc\u011a\5\36\20\22\u00fd"+ + "\u00fe\f\17\2\2\u00fe\u00ff\t\b\2\2\u00ff\u011a\5\36\20\20\u0100\u0101"+ + "\f\16\2\2\u0101\u0102\7\36\2\2\u0102\u011a\5\36\20\17\u0103\u0104\f\r"+ + "\2\2\u0104\u0105\7-\2\2\u0105\u011a\5\36\20\16\u0106\u0107\f\f\2\2\u0107"+ + "\u0108\7.\2\2\u0108\u011a\5\36\20\r\u0109\u010a\f\13\2\2\u010a\u010b\7"+ + "/\2\2\u010b\u011a\5\36\20\f\u010c\u010d\f\n\2\2\u010d\u010e\7\60\2\2\u010e"+ + "\u011a\5\36\20\13\u010f\u0110\f\t\2\2\u0110\u0111\7\n\2\2\u0111\u011a"+ + "\5\36\20\t\u0112\u0113\f\30\2\2\u0113\u0114\7\27\2\2\u0114\u0115\5\36"+ + "\20\2\u0115\u0116\7\30\2\2\u0116\u011a\3\2\2\2\u0117\u0118\f\26\2\2\u0118"+ + "\u011a\t\2\2\2\u0119\u00f4\3\2\2\2\u0119\u00f7\3\2\2\2\u0119\u00fa\3\2"+ + "\2\2\u0119\u00fd\3\2\2\2\u0119\u0100\3\2\2\2\u0119\u0103\3\2\2\2\u0119"+ + "\u0106\3\2\2\2\u0119\u0109\3\2\2\2\u0119\u010c\3\2\2\2\u0119\u010f\3\2"+ + "\2\2\u0119\u0112\3\2\2\2\u0119\u0117\3\2\2\2\u011a\u011d\3\2\2\2\u011b"+ + "\u0119\3\2\2\2\u011b\u011c\3\2\2\2\u011c\37\3\2\2\2\u011d\u011b\3\2\2"+ + "\2\u011e\u0123\5\36\20\2\u011f\u0120\7\b\2\2\u0120\u0122\5\36\20\2\u0121"+ + "\u011f\3\2\2\2\u0122\u0125\3\2\2\2\u0123\u0121\3\2\2\2\u0123\u0124\3\2"+ + "\2\2\u0124!\3\2\2\2\u0125\u0123\3\2\2\2\u0126\u0128\5$\23\2\u0127\u0126"+ + "\3\2\2\2\u0128\u012b\3\2\2\2\u0129\u0127\3\2\2\2\u0129\u012a\3\2\2\2\u012a"+ + "#\3\2\2\2\u012b\u0129\3\2\2\2\u012c\u012f\5&\24\2\u012d\u012f\5(\25\2"+ + "\u012e\u012c\3\2\2\2\u012e\u012d\3\2\2\2\u012f%\3\2\2\2\u0130\u0131\7"+ + "@\2\2\u0131\u0135\7\23\2\2\u0132\u0133\7\35\2\2\u0133\u0135\7\23\2\2\u0134"+ + "\u0130\3\2\2\2\u0134\u0132\3\2\2\2\u0135\'\3\2\2\2\u0136\u0138\7\62\2"+ + "\2\u0137\u0139\5*\26\2\u0138\u0137\3\2\2\2\u0138\u0139\3\2\2\2\u0139)"+ + "\3\2\2\2\u013a\u0152\5,\27\2\u013b\u013c\7\61\2\2\u013c\u0152\5,\27\2"+ + "\u013d\u013e\5,\27\2\u013e\u013f\7\b\2\2\u013f\u0140\7@\2\2\u0140\u0152"+ + "\3\2\2\2\u0141\u0142\7\4\2\2\u0142\u0143\5,\27\2\u0143\u0144\7\5\2\2\u0144"+ + "\u0145\7\b\2\2\u0145\u0146\7@\2\2\u0146\u0152\3\2\2\2\u0147\u0148\7\4"+ + "\2\2\u0148\u0149\5,\27\2\u0149\u014a\7\b\2\2\u014a\u014b\7@\2\2\u014b"+ + "\u014c\7\5\2\2\u014c\u0152\3\2\2\2\u014d\u014e\7\4\2\2\u014e\u014f\5,"+ + "\27\2\u014f\u0150\7\5\2\2\u0150\u0152\3\2\2\2\u0151\u013a\3\2\2\2\u0151"+ + "\u013b\3\2\2\2\u0151\u013d\3\2\2\2\u0151\u0141\3\2\2\2\u0151\u0147\3\2"+ + "\2\2\u0151\u014d\3\2\2\2\u0152+\3\2\2\2\u0153\u0154\b\27\1\2\u0154\u0155"+ + "\t\t\2\2\u0155\u015e\5,\27\n\u0156\u015e\7@\2\2\u0157\u015e\7A\2\2\u0158"+ + "\u0159\7\6\2\2\u0159\u015a\7@\2\2\u015a\u015e\7\7\2\2\u015b\u015e\7\67"+ + "\2\2\u015c\u015e\7\65\2\2\u015d\u0153\3\2\2\2\u015d\u0156\3\2\2\2\u015d"+ + "\u0157\3\2\2\2\u015d\u0158\3\2\2\2\u015d\u015b\3\2\2\2\u015d\u015c\3\2"+ + "\2\2\u015e\u0167\3\2\2\2\u015f\u0160\f\t\2\2\u0160\u0161\t\n\2\2\u0161"+ + "\u0166\5,\27\n\u0162\u0163\f\b\2\2\u0163\u0164\t\7\2\2\u0164\u0166\5,"+ + "\27\t\u0165\u015f\3\2\2\2\u0165\u0162\3\2\2\2\u0166\u0169\3\2\2\2\u0167"+ + "\u0165\3\2\2\2\u0167\u0168\3\2\2\2\u0168-\3\2\2\2\u0169\u0167\3\2\2\2"+ + "%8AGLQX_elq~\u0091\u0099\u00a1\u00a4\u00a9\u00b5\u00bb\u00c2\u00c5\u00c7"+ + "\u00d2\u00e8\u00f2\u0119\u011b\u0123\u0129\u012e\u0134\u0138\u0151\u015d"+ + "\u0165\u0167"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java b/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java index ddc08d25d..16ee589c2 100644 --- a/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java +++ b/src/main/java/dk/camelot64/kickc/parser/KickCVisitor.java @@ -92,13 +92,6 @@ public interface KickCVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitStmtBlock(KickCParser.StmtBlockContext ctx); - /** - * Visit a parse tree produced by the {@code stmtAssignment} - * labeled alternative in {@link KickCParser#stmt}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitStmtAssignment(KickCParser.StmtAssignmentContext ctx); /** * Visit a parse tree produced by the {@code stmtExpr} * labeled alternative in {@link KickCParser#stmt}. @@ -198,40 +191,12 @@ public interface KickCVisitor extends ParseTreeVisitor { */ T visitTypeSignedSimple(KickCParser.TypeSignedSimpleContext ctx); /** - * Visit a parse tree produced by the {@code lvalueName} - * labeled alternative in {@link KickCParser#lvalue}. + * Visit a parse tree produced by the {@code exprPtr} + * labeled alternative in {@link KickCParser#expr}. * @param ctx the parse tree * @return the visitor result */ - T visitLvalueName(KickCParser.LvalueNameContext ctx); - /** - * Visit a parse tree produced by the {@code lvaluePtr} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitLvaluePtr(KickCParser.LvaluePtrContext ctx); - /** - * Visit a parse tree produced by the {@code lvaluePtrExpr} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx); - /** - * Visit a parse tree produced by the {@code lvalueArray} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitLvalueArray(KickCParser.LvalueArrayContext ctx); - /** - * Visit a parse tree produced by the {@code lvalueLoHi} - * labeled alternative in {@link KickCParser#lvalue}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitLvalueLoHi(KickCParser.LvalueLoHiContext ctx); + T visitExprPtr(KickCParser.ExprPtrContext ctx); /** * Visit a parse tree produced by the {@code exprPreMod} * labeled alternative in {@link KickCParser#expr}. @@ -323,6 +288,13 @@ public interface KickCVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitExprId(KickCParser.ExprIdContext ctx); + /** + * Visit a parse tree produced by the {@code exprAssignment} + * labeled alternative in {@link KickCParser#expr}. + * @param ctx the parse tree + * @return the visitor result + */ + T visitExprAssignment(KickCParser.ExprAssignmentContext ctx); /** * Visit a parse tree produced by the {@code exprArray} * labeled alternative in {@link KickCParser#expr}. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java new file mode 100644 index 000000000..bb50e5a08 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java @@ -0,0 +1,32 @@ +package dk.camelot64.kickc.passes; + +import dk.camelot64.kickc.model.*; + +/** + * Asserts that all intermediate lvalues have been replaced by something else + */ +public class Pass1AssertNoLValueIntermediate extends Pass1Base { + + public Pass1AssertNoLValueIntermediate(Program program) { + super(program); + } + + @Override + public boolean executeStep() { + for (ControlFlowBlock block : getGraph().getAllBlocks()) { + for (Statement statement : block.getStatements()) { + if(statement instanceof StatementLValue) { + LValue lValue = ((StatementLValue) statement).getlValue(); + if(lValue instanceof LvalueIntermediate) { + VariableRef intermediateVar = ((LvalueIntermediate) lValue).getVariable(); + StatementAssignment assignment = getGraph().getAssignment(intermediateVar); + throw new CompileError("Error! LValue is illegal. "+statement+" - definition of lValue "+assignment); + } + } + } + } + return false; + } + + +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java new file mode 100644 index 000000000..4e93d29bc --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java @@ -0,0 +1,65 @@ +package dk.camelot64.kickc.passes; + +import dk.camelot64.kickc.model.*; + +import java.util.List; +import java.util.ListIterator; + +/** + * Replaces all LValue intermediate lo/hi-assignments with a separate assignment to the modified variable. + *
Example: <plotter = x & 8 + *
Becomes: $1 =x & 8 , plotter = plotter lo= $1 + */ +public class Pass1FixLValuesLoHi extends Pass1Base { + + public Pass1FixLValuesLoHi(Program program) { + super(program); + } + + @Override + boolean executeStep() { + ProgramScope programScope = getProgram().getScope(); + for (ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) { + List statements = block.getStatements(); + ListIterator statementsIt = statements.listIterator(); + while (statementsIt.hasNext()) { + Statement statement = statementsIt.next(); + if (statement instanceof StatementLValue && ((StatementLValue) statement).getlValue() instanceof LvalueIntermediate) { + StatementLValue statementLValue = (StatementLValue) statement; + LvalueIntermediate intermediate = (LvalueIntermediate) statementLValue.getlValue(); + StatementAssignment intermediateAssignment = getProgram().getGraph().getAssignment(intermediate.getVariable()); + if (Operator.LOWBYTE.equals(intermediateAssignment.getOperator()) && intermediateAssignment.getrValue1() == null) { + // Found assignment to an intermediate low byte lValue x = ... + fixLoHiLValue(programScope, statementsIt, statementLValue, intermediate, intermediateAssignment, Operator.SET_HIBYTE); + } + } + } + } + return false; + } + + private void fixLoHiLValue( + ProgramScope programScope, + ListIterator statementsIt, + StatementLValue statementLValue, + LvalueIntermediate intermediate, + StatementAssignment intermediateAssignment, + Operator loHiOperator) { + VariableRef loHiVar = (VariableRef) intermediateAssignment.getrValue2(); + Variable intermediateVar = programScope.getVariable(intermediate.getVariable()); + Scope currentScope = intermediateVar.getScope(); + // Let assignment put value into a tmp Var + VariableIntermediate tmpVar = currentScope.addVariableIntermediate(); + VariableRef tmpVarRef = tmpVar.getRef(); + statementLValue.setlValue(tmpVarRef); + SymbolTypeInference.inferLValue(programScope, statementLValue); + // Insert an extra "set low" assignment statement + Statement setLoHiAssignment = new StatementAssignment(loHiVar, loHiVar, loHiOperator, tmpVarRef); + statementsIt.add(setLoHiAssignment); + getLog().append("Fixing lo/hi-lvalue with new tmpVar " + tmpVarRef + " " + statementLValue.toString()); + } + +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLvalueLoHi.java b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLvalueLoHi.java deleted file mode 100644 index c8f4d5766..000000000 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLvalueLoHi.java +++ /dev/null @@ -1,60 +0,0 @@ -package dk.camelot64.kickc.passes; - -import dk.camelot64.kickc.model.*; - -import java.util.Stack; - -/** - * Replaces all LValueLoHi with a separate assignment to the modified variable. - *
Example: <plotter = x & 8 - *
Becomes: $1 =x & 8 , plotter = plotter lo= $1 - */ -public class Pass1FixLvalueLoHi extends Pass1Base { - - public Pass1FixLvalueLoHi(Program program) { - super(program); - } - - @Override - boolean executeStep() { - Stack scopeStack = new Stack<>(); - scopeStack.push(getScope()); - StatementSequence fixedSequence = new StatementSequence(); - for (Statement statement : getProgram().getStatementSequence().getStatements()) { - if (statement instanceof StatementAssignment) { - StatementAssignment assignment = (StatementAssignment) statement; - if (assignment.getlValue() instanceof LvalueLoHiByte) { - LvalueLoHiByte loHiByte = (LvalueLoHiByte) assignment.getlValue(); - if (assignment.getOperator() != null || assignment.getrValue1()!=null) { - Scope currentScope = scopeStack.peek(); - VariableIntermediate tmpVar = currentScope.addVariableIntermediate(); - VariableRef tmpVarRef = tmpVar.getRef(); - Statement tmpAssignment = new StatementAssignment(tmpVarRef, assignment.getrValue1(), assignment.getOperator(), assignment.getrValue2()); - fixedSequence.addStatement(tmpAssignment); - Statement setLoHiAssignment = new StatementAssignment(loHiByte.getVariable(), loHiByte.getVariable(), loHiByte.getOperator(), tmpVarRef); - fixedSequence.addStatement(setLoHiAssignment); - getLog().append("Fixing lo/hi-lvalue with new tmpVar " + tmpVarRef + " " + assignment.toString()); - } else { - Statement setLoHiAssignment = new StatementAssignment(loHiByte.getVariable(), loHiByte.getVariable(), loHiByte.getOperator(), assignment.getrValue2()); - fixedSequence.addStatement(setLoHiAssignment); - getLog().append("Fixing lo/hi-lvalue " + assignment.toString()); - } - } else { - fixedSequence.addStatement(statement); - } - } else { - fixedSequence.addStatement(statement); - } - if (statement instanceof StatementProcedureBegin) { - ProcedureRef procedureRef = ((StatementProcedureBegin) statement).getProcedure(); - Procedure procedure = getScope().getProcedure(procedureRef); - scopeStack.push(procedure); - } else if (statement instanceof StatementProcedureEnd) { - scopeStack.pop(); - } - } - getProgram().setStatementSequence(fixedSequence); - return false; - } - -} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java b/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java index 23f6817ad..0eddedf5f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java @@ -29,27 +29,9 @@ public class Pass1TypeInference extends Pass1Base { scopes.pop(); } else if (statement instanceof StatementAssignment) { StatementAssignment assignment = (StatementAssignment) statement; - LValue lValue = assignment.getlValue(); - if (lValue instanceof VariableRef) { - Variable symbol = programScope.getVariable((VariableRef) lValue); - if (SymbolType.VAR.equals(symbol.getType())) { - // Unresolved symbol - perform inference - Operator operator = assignment.getOperator(); - if (operator == null || assignment.getrValue1() == null) { - // Copy operation or Unary operation - RValue rValue = assignment.getrValue2(); - SymbolType type = SymbolTypeInference.inferType(programScope, operator, rValue); - symbol.setTypeInferred(type); - } else { - // Binary operation - SymbolType type = SymbolTypeInference.inferType(programScope, assignment.getrValue1(), assignment.getOperator(), assignment.getrValue2()); - symbol.setTypeInferred(type); - } - } - } + SymbolTypeInference.inferAssignmentLValue(programScope, assignment); } else if(statement instanceof StatementCall) { StatementCall call = (StatementCall) statement; - LValue lValue = call.getlValue(); String procedureName = call.getProcedureName(); Procedure procedure = scopes.peek().getProcedure(procedureName); if(procedure==null) { @@ -59,10 +41,7 @@ public class Pass1TypeInference extends Pass1Base { if(procedure.getParameters().size()!=call.getParameters().size()) { throw new CompileError("Wrong number of parameters in call. Expected " +procedure.getParameters().size()+". "+statement.toString()); } - if(lValue instanceof VariableRef) { - Variable lValueVar = programScope.getVariable((VariableRef) lValue); - lValueVar.setTypeInferred(procedure.getReturnType()); - } + SymbolTypeInference.inferCallLValue(programScope, (StatementCall) statement); } } return false; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java index feb5a393d..1501dce2f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java @@ -39,8 +39,15 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization { if (statement instanceof StatementAssignment) { StatementAssignment assignment = (StatementAssignment) statement; if(assignment.getlValue() instanceof PointerDereferenceIndexed) { - optimized |= optimizePointerDereferenceIndexed(assignment); + optimized |= optimizePointerDereferenceIndexed(new VariableReplacer.ReplacableLValue(assignment)); } + if(assignment.getrValue1() instanceof PointerDereferenceIndexed) { + optimized |= optimizePointerDereferenceIndexed(new VariableReplacer.ReplacableRValue1(assignment)); + } + if(assignment.getrValue2() instanceof PointerDereferenceIndexed) { + optimized |= optimizePointerDereferenceIndexed(new VariableReplacer.ReplacableRValue2(assignment)); + } + Operator operator = assignment.getOperator(); if (operator != null) { switch (operator.getOperator()) { @@ -52,20 +59,28 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization { break; } } + } else if(statement instanceof StatementConditionalJump) { + StatementConditionalJump jump = (StatementConditionalJump) statement; + if(jump.getrValue1() instanceof PointerDereferenceIndexed) { + optimized |= optimizePointerDereferenceIndexed(new VariableReplacer.ReplacableCondRValue1(jump)); + } + if(jump.getrValue2() instanceof PointerDereferenceIndexed) { + optimized |= optimizePointerDereferenceIndexed(new VariableReplacer.ReplacableCondRValue2(jump)); + } } } } return optimized; } - private boolean optimizePointerDereferenceIndexed(StatementAssignment assignment) { - PointerDereferenceIndexed pointerDereferenceIndexed = (PointerDereferenceIndexed) assignment.getlValue(); + private boolean optimizePointerDereferenceIndexed(VariableReplacer.ReplacableValue value) { + PointerDereferenceIndexed pointerDereferenceIndexed = (PointerDereferenceIndexed) value.get(); if(pointerDereferenceIndexed.getPointer() instanceof ConstantValue && pointerDereferenceIndexed.getIndex() instanceof ConstantValue) { ConstantValue ptrConstant = (ConstantValue) pointerDereferenceIndexed.getPointer(); ConstantValue idxConstant = (ConstantValue) pointerDereferenceIndexed.getIndex(); ConstantValue newPtr = new ConstantBinary(ptrConstant, Operator.PLUS, idxConstant); - assignment.setlValue(new PointerDereferenceSimple(newPtr)); - getLog().append("Consolidated assigned array index constant in assignment " + assignment.getlValue()); + value.set(new PointerDereferenceSimple(newPtr)); + getLog().append("Consolidated array index constant in " + value.get().toString()); return true; } if(pointerDereferenceIndexed.getPointer() instanceof ConstantValue && pointerDereferenceIndexed.getIndex() instanceof VariableRef) { @@ -75,7 +90,7 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization { ConstantValue ptrConstant = (ConstantValue) pointerDereferenceIndexed.getPointer(); ConstantValue newPtr = new ConstantBinary(ptrConstant, Operator.PLUS, consolidated); pointerDereferenceIndexed.setPointer(newPtr); - getLog().append("Consolidated assigned array index constant in assignment " + assignment.getlValue()); + getLog().append("Consolidated array index constant in assignment " + value.get().toString()); return true; } } diff --git a/src/main/java/dk/camelot64/kickc/passes/StatementSequenceGenerator.java b/src/main/java/dk/camelot64/kickc/passes/StatementSequenceGenerator.java index 122970785..1c6612746 100644 --- a/src/main/java/dk/camelot64/kickc/passes/StatementSequenceGenerator.java +++ b/src/main/java/dk/camelot64/kickc/passes/StatementSequenceGenerator.java @@ -396,58 +396,6 @@ public class StatementSequenceGenerator extends KickCBaseVisitor { PrePostModifierHandler.addPostModifiers(this, initializer); } - @Override - public Void visitStmtAssignment(KickCParser.StmtAssignmentContext ctx) { - PrePostModifierHandler.addPreModifiers(this, ctx); - LValue lValue = (LValue) visit(ctx.lvalue()); - RValue rValue = (RValue) this.visit(ctx.expr()); - Statement stmt = new StatementAssignment(lValue, rValue); - sequence.addStatement(stmt); - PrePostModifierHandler.addPostModifiers(this, ctx); - return null; - } - - @Override - public LValue visitLvalueName(KickCParser.LvalueNameContext ctx) { - Variable variable = getCurrentSymbols().getVariable(ctx.NAME().getText()); - return variable.getRef(); - } - - @Override - public LValue visitLvaluePtr(KickCParser.LvaluePtrContext ctx) { - Variable variable = getCurrentSymbols().getVariable(ctx.NAME().getText()); - return new PointerDereferenceSimple(variable.getRef()); - } - - @Override - public Object visitLvaluePtrExpr(KickCParser.LvaluePtrExprContext ctx) { - RValue rValue = (RValue) this.visit(ctx.expr()); - return new PointerDereferenceSimple(rValue); - } - - @Override - public Object visitLvalueLoHi(KickCParser.LvalueLoHiContext ctx) { - LValue lval = (LValue) visit(ctx.lvalue()); - if (lval instanceof VariableRef) { - String opTxt = ctx.getChild(0).getText(); - if (opTxt.equals("<")) { - return new LvalueLoHiByte(Operator.SET_LOWBYTE, (VariableRef) lval); - } else if (opTxt.equals(">")) { - return new LvalueLoHiByte(Operator.SET_HIBYTE, (VariableRef) lval); - } else { - throw new RuntimeException("Not implemented - lo/hi-lvalue operator " + opTxt); - } - } - throw new RuntimeException("Not implemented - lo/hi lvalues of non-variables"); - } - - @Override - public LValue visitLvalueArray(KickCParser.LvalueArrayContext ctx) { - LValue lval = (LValue) visit(ctx.lvalue()); - RValue index = (RValue) visit(ctx.expr()); - return new PointerDereferenceIndexed(lval, index); - } - @Override public RValue visitInitList(KickCParser.InitListContext ctx) { List initValues = new ArrayList<>(); @@ -489,6 +437,19 @@ public class StatementSequenceGenerator extends KickCBaseVisitor { } } + @Override + public Object visitExprAssignment(KickCParser.ExprAssignmentContext ctx) { + LValue lValue = (LValue) visit(ctx.expr(0)); + if(lValue instanceof VariableRef && ((VariableRef) lValue).isIntermediate()) { + // Encountered an intermediate variable. This must be turned into a proper LValue later. Put it into a marker to signify that + lValue = new LvalueIntermediate((VariableRef) lValue); + } + RValue rValue = (RValue) this.visit(ctx.expr(1)); + Statement stmt = new StatementAssignment(lValue, rValue); + sequence.addStatement(stmt); + return lValue; + } + @Override public RValue visitExprCast(KickCParser.ExprCastContext ctx) { RValue child = (RValue) this.visit(ctx.expr()); @@ -530,12 +491,7 @@ public class StatementSequenceGenerator extends KickCBaseVisitor { public RValue visitExprArray(KickCParser.ExprArrayContext ctx) { RValue array = (LValue) visit(ctx.expr(0)); RValue index = (RValue) visit(ctx.expr(1)); - Operator operator = Operator.DEREF_IDX; - VariableIntermediate tmpVar = getCurrentSymbols().addVariableIntermediate(); - VariableRef tmpVarRef = tmpVar.getRef(); - Statement stmt = new StatementAssignment(tmpVarRef, array, operator, index); - sequence.addStatement(stmt); - return tmpVarRef; + return new PointerDereferenceIndexed(array, index); } @Override @@ -578,20 +534,22 @@ public class StatementSequenceGenerator extends KickCBaseVisitor { return tmpVarRef; } + @Override + public Object visitExprPtr(KickCParser.ExprPtrContext ctx) { + RValue child = (RValue) this.visit(ctx.expr()); + return new PointerDereferenceSimple(child); + } + @Override public RValue visitExprUnary(KickCParser.ExprUnaryContext ctx) { RValue child = (RValue) this.visit(ctx.expr()); String op = ((TerminalNode) ctx.getChild(0)).getSymbol().getText(); Operator operator = Operator.getUnary(op); - if (Operator.DEREF.equals(operator)) { - return new PointerDereferenceSimple(child); - } else { - VariableIntermediate tmpVar = getCurrentSymbols().addVariableIntermediate(); - VariableRef tmpVarRef = tmpVar.getRef(); - Statement stmt = new StatementAssignment(tmpVarRef, operator, child); - sequence.addStatement(stmt); - return tmpVarRef; - } + VariableIntermediate tmpVar = getCurrentSymbols().addVariableIntermediate(); + VariableRef tmpVarRef = tmpVar.getRef(); + Statement stmt = new StatementAssignment(tmpVarRef, operator, child); + sequence.addStatement(stmt); + return tmpVarRef; } @Override diff --git a/src/main/java/dk/camelot64/kickc/test/TestErrors.java b/src/main/java/dk/camelot64/kickc/test/TestErrors.java index 9d341efb4..1e1aeeab6 100644 --- a/src/main/java/dk/camelot64/kickc/test/TestErrors.java +++ b/src/main/java/dk/camelot64/kickc/test/TestErrors.java @@ -28,10 +28,6 @@ public class TestErrors extends TestCase { compileAndCompare("nocast"); } - public void testConstants() throws IOException, URISyntaxException { - compileAndCompare("constants"); - } - public void testInlineAsmParam() throws IOException, URISyntaxException { compileAndCompare("inline-asm-param"); } @@ -41,11 +37,6 @@ public class TestErrors extends TestCase { compileAndCompare(filename); } - public void testForIncrementAssign() throws IOException, URISyntaxException { - String filename = "forincrementassign"; - compileAndCompare(filename); - } - private void compileAndCompare(String filename) throws IOException, URISyntaxException { TestErrors tester = new TestErrors(); tester.testFile(filename); diff --git a/src/main/java/dk/camelot64/kickc/test/TestPrograms.java b/src/main/java/dk/camelot64/kickc/test/TestPrograms.java index bd39fb02a..bbe8af50f 100644 --- a/src/main/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/main/java/dk/camelot64/kickc/test/TestPrograms.java @@ -22,6 +22,18 @@ public class TestPrograms extends TestCase { helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/"); } + public void testForIncrementAssign() throws IOException, URISyntaxException { + compileAndCompare("forincrementassign"); + } + + public void testConstants() throws IOException, URISyntaxException { + compileAndCompare("constants"); + } + + public void testInlineAssignment() throws IOException, URISyntaxException { + compileAndCompare("inline-assignment"); + } + public void testInlineWord() throws IOException, URISyntaxException { compileAndCompare("inline-word"); } @@ -307,6 +319,10 @@ public class TestPrograms extends TestCase { assertError("procedurenotfound", "Called procedure not found"); } + public void testIllegalLValue() throws IOException, URISyntaxException { + assertError("illegallvalue", "LValue is illegal"); + } + private void assertError(String kcFile, String expectError) throws IOException, URISyntaxException { try { compileAndCompare(kcFile); diff --git a/src/main/java/dk/camelot64/kickc/test/constants.kc b/src/main/java/dk/camelot64/kickc/test/constants.kc index 93c703f6b..802f14e49 100644 --- a/src/main/java/dk/camelot64/kickc/test/constants.kc +++ b/src/main/java/dk/camelot64/kickc/test/constants.kc @@ -1,3 +1,4 @@ +import "print.kc" const byte* BGCOL = $d021; const byte GREEN = 5; const byte RED = 2 ; @@ -56,28 +57,3 @@ void assert_sbyte(byte* msg, signed byte b, signed byte c) { } print_ln(); } - -byte* line_cursor = $0400; -byte* char_cursor = line_cursor; - -// Print a zero-terminated string -void print_str(byte* str) { - while(*str!='@') { - *(char_cursor++) = *(str++); - } -} - -// Print a newline -void print_ln() { - do { - line_cursor = line_cursor + $28; - } while (line_cursorSCREEN, >SCREEN+$100 }; - for( byte h: 0..1) { + byte[] his = { >SCREEN, >SCREEN+$100, >SCREEN+$200 }; + for( byte h: 0..2) { for (byte l: 4..7) { word w = { his[h], l }; byte* sc = (byte*)w; diff --git a/src/main/java/dk/camelot64/kickc/test/print.kc b/src/main/java/dk/camelot64/kickc/test/print.kc index 3bdd3c141..d36420cd2 100644 --- a/src/main/java/dk/camelot64/kickc/test/print.kc +++ b/src/main/java/dk/camelot64/kickc/test/print.kc @@ -36,3 +36,11 @@ void print_char(byte ch) { *(char_cursor++) = ch; } +// Clear the screen +void print_cls() { + for(byte* sc=$0400; sc!=$0400+1000; sc++) { + *sc = ' '; + } +} + + diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm index 8e9c10aee..da609c694 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.asm @@ -222,8 +222,7 @@ line_ydxi: { rts } plot: { - .label _2 = $a - .label _4 = 8 + .label _0 = 8 .label plotter_x = 8 .label plotter_y = $b .label plotter = 8 @@ -232,21 +231,19 @@ plot: { lda plot_xlo,x sta plotter_x lda plot_yhi,y - sta _2 + sta plotter_y+1 lda plot_ylo,y sta plotter_y - lda _2 - sta plotter_y+1 - lda _4 + lda _0 clc adc plotter_y - sta _4 - lda _4+1 + sta _0 + lda _0+1 adc plotter_y+1 - sta _4+1 - lda plot_bit,x + sta _0+1 ldy #0 - ora (plotter),y + lda (plotter),y + ora plot_bit,x sta (plotter),y rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg index de157bfbf..08ef720f1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.cfg @@ -33,10 +33,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 [16] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] ) - [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) - [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) - [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) - [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) + [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) + [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) + [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) + [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) [21] call line param-assignment [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] ) to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -175,184 +175,179 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 [101] return [ ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 ] ) to:@return plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 - [102] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) - [102] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) - [103] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] ) - [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] ) - [105] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) - [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ) - [107] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ) - [108] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) - [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] ) - [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) - [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] ) - [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] ) - [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [102] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) + [102] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) + [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) + [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) + [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] ) + [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) + [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] ) + [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) to:plot::@return plot::@return: scope:[plot] from plot - [114] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [109] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) to:@return line_xdyi: scope:[line_xdyi] from line::@17 line::@27 - [115] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) + [110] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 - [117] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [117] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [117] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [118] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [119] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [112] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [112] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [112] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [113] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [114] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [115] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) - [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) - [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) + [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) + [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) + [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) to:line_xdyi::@3 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) - [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) + [119] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) + [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) to:line_xdyi::@2 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 - [126] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) - [126] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) - [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) - [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) + [121] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) + [121] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) + [122] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) + [123] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) to:line_xdyi::@return line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 - [129] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) + [124] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) to:@return line_ydxd: scope:[line_ydxd] from line::@10 line::@6 - [130] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) + [125] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 - [132] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [132] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [132] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [133] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [134] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [127] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [127] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [127] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [128] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [129] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [130] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) - [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) - [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) + [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) + [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) + [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) to:line_ydxd::@3 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) - [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) + [134] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) + [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) to:line_ydxd::@2 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 - [141] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) - [141] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) - [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) - [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) + [136] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) + [136] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) + [137] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) + [138] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 - [144] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) + [139] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) to:@return line_xdyd: scope:[line_xdyd] from line::@20 line::@24 - [145] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) + [140] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 - [147] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [147] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [147] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [148] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [149] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [142] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [142] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [142] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [143] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [144] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [145] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) - [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) - [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) + [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) + [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) + [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) to:line_xdyd::@3 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) - [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) + [149] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) + [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) to:line_xdyd::@2 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 - [156] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) - [156] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) - [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) - [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) + [151] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) + [151] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) + [152] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) + [153] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) to:line_xdyd::@return line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 - [159] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) + [154] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - [160] phi() [ ] ( main:2::init_plot_tables:10 [ ] ) + [155] phi() [ ] ( main:2::init_plot_tables:10 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) - [163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [156] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [156] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [158] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [161] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [162] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) - [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [163] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [164] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [165] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) - [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) - [174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) - [175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) - [177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [166] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [166] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [168] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) + [169] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) + [170] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) + [172] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [174] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [181] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) - [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [176] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) + [177] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [178] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [184] return [ ] ( main:2::init_plot_tables:10 [ ] ) + [179] return [ ] ( main:2::init_plot_tables:10 [ ] ) to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [185] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [180] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [186] phi() [ ] ( main:2::init_screen:8 [ ] ) + [181] phi() [ ] ( main:2::init_screen:8 [ ] ) to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [187] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) - [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [182] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [191] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) - [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [186] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [195] return [ ] ( main:2::init_screen:8 [ ] ) + [190] return [ ] ( main:2::init_screen:8 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log index d44693fa4..415e134a0 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-bresenham.log @@ -228,16 +228,12 @@ endproc // main() proc (void()) lines() (byte) lines::l ← (byte/signed byte/word/signed word) 0 lines::@1: - (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l + (byte~) lines::$0 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 - (void~) lines::$6 ← call line (byte~) lines::$0 (byte~) lines::$2 (byte~) lines::$3 (byte~) lines::$5 + (void~) lines::$2 ← call line *((byte[]) lines_x + (byte) lines::l) *((byte[]) lines_x + (byte~) lines::$0) *((byte[]) lines_y + (byte) lines::l) *((byte[]) lines_y + (byte~) lines::$1) (byte) lines::l ← ++ (byte) lines::l - (boolean~) lines::$7 ← (byte) lines::l < (byte) lines_cnt - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l < (byte) lines_cnt + if((boolean~) lines::$3) goto lines::@1 lines::@return: return endproc // lines() @@ -400,17 +396,12 @@ line_ydxd::@return: return endproc // line_ydxd() proc (void()) plot((byte) plot::x , (byte) plot::y) - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (word) plot::plotter_x ← { (byte~) plot::$0, (byte~) plot::$1 } - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← { (byte~) plot::$2, (byte~) plot::$3 } - (word~) plot::$4 ← (word) plot::plotter_x + (word) plot::plotter_y - (byte*) plot::plotter ← (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (word) plot::plotter_x ← { *((byte[]) plot_xhi + (byte) plot::x), *((byte[]) plot_xlo + (byte) plot::x) } + (word) plot::plotter_y ← { *((byte[]) plot_yhi + (byte) plot::y), *((byte[]) plot_ylo + (byte) plot::y) } + (word~) plot::$0 ← (word) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$1 plot::@return: return endproc // plot() @@ -662,12 +653,8 @@ SYMBOLS (void()) lines() (byte~) lines::$0 (byte~) lines::$1 -(byte~) lines::$2 -(byte~) lines::$3 -(byte~) lines::$4 -(byte~) lines::$5 -(void~) lines::$6 -(boolean~) lines::$7 +(void~) lines::$2 +(boolean~) lines::$3 (label) lines::@1 (label) lines::@return (byte) lines::l @@ -690,13 +677,8 @@ SYMBOLS (label) main::@1 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 +(word~) plot::$0 (byte~) plot::$1 -(byte~) plot::$2 -(byte~) plot::$3 -(word~) plot::$4 -(byte~) plot::$5 -(byte~) plot::$6 (label) plot::@return (byte*) plot::plotter (word) plot::plotter_x @@ -723,7 +705,7 @@ Promoting word/signed word to byte[] in plot_xhi ← ((byte*)) 4352 Promoting word/signed word to byte[] in plot_ylo ← ((byte*)) 4608 Promoting word/signed word to byte[] in plot_yhi ← ((byte*)) 4864 Promoting word/signed word to byte[] in plot_bit ← ((byte*)) 5120 -Promoting word to byte* in plot::plotter ← ((byte*)) plot::$4 +Promoting word to byte* in plot::plotter ← ((byte*)) plot::$0 Promoting byte/signed byte/word/signed word to byte* in init_plot_tables::yoffs ← ((byte*)) 0 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from @@ -784,16 +766,12 @@ lines: scope:[lines] from (byte) lines::l ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@1 - (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l + (byte~) lines::$0 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 - (void~) lines::$6 ← call line (byte~) lines::$0 (byte~) lines::$2 (byte~) lines::$3 (byte~) lines::$5 + (void~) lines::$2 ← call line *((byte[]) lines_x + (byte) lines::l) *((byte[]) lines_x + (byte~) lines::$0) *((byte[]) lines_y + (byte) lines::l) *((byte[]) lines_y + (byte~) lines::$1) (byte) lines::l ← ++ (byte) lines::l - (boolean~) lines::$7 ← (byte) lines::l < (byte) lines_cnt - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l < (byte) lines_cnt + if((boolean~) lines::$3) goto lines::@1 to:lines::@2 lines::@2: scope:[lines] from lines::@1 to:lines::@return @@ -1035,17 +1013,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@4 @7: scope:[] from @6 to:@8 plot: scope:[plot] from - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (word) plot::plotter_x ← { (byte~) plot::$0, (byte~) plot::$1 } - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← { (byte~) plot::$2, (byte~) plot::$3 } - (word~) plot::$4 ← (word) plot::plotter_x + (word) plot::plotter_y - (byte*) plot::plotter ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (word) plot::plotter_x ← { *((byte[]) plot_xhi + (byte) plot::x), *((byte[]) plot_xlo + (byte) plot::x) } + (word) plot::plotter_y ← { *((byte[]) plot_yhi + (byte) plot::y), *((byte[]) plot_ylo + (byte) plot::y) } + (word~) plot::$0 ← (word) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1149,7 +1122,7 @@ Eliminating unused variable (byte) CSEL and assignment [13] (byte) CSEL ← (byt Eliminating unused variable - keeping the call (void~) main::$9 Eliminating unused variable - keeping the call (void~) main::$10 Eliminating unused variable - keeping the call (void~) main::$11 -Eliminating unused variable - keeping the call (void~) lines::$6 +Eliminating unused variable - keeping the call (void~) lines::$2 Eliminating unused variable - keeping the call (void~) line::$9 Eliminating unused variable - keeping the call (void~) line::$8 Eliminating unused variable - keeping the call (void~) line::$14 @@ -1162,8 +1135,8 @@ Eliminating unused variable - keeping the call (void~) line_xdyi::$1 Eliminating unused variable - keeping the call (void~) line_xdyd::$1 Eliminating unused variable - keeping the call (void~) line_ydxi::$1 Eliminating unused variable - keeping the call (void~) line_ydxd::$1 -Fixing word constructor with plot::plotter_x ← plot::$0 w= plot::$1 -Fixing word constructor with plot::plotter_y ← plot::$2 w= plot::$3 +Fixing word constructor with plot::plotter_x ← *(plot_xhi + plot::x) w= *(plot_xlo + plot::x) +Fixing word constructor with plot::plotter_y ← *(plot_yhi + plot::y) w= *(plot_ylo + plot::y) Removing empty block main::@2 Removing empty block @1 Removing empty block lines::@2 @@ -1243,16 +1216,12 @@ lines: scope:[lines] from (byte) lines::l ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@1 - (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l + (byte~) lines::$0 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 - call line (byte~) lines::$0 (byte~) lines::$2 (byte~) lines::$3 (byte~) lines::$5 + call line *((byte[]) lines_x + (byte) lines::l) *((byte[]) lines_x + (byte~) lines::$0) *((byte[]) lines_y + (byte) lines::l) *((byte[]) lines_y + (byte~) lines::$1) (byte) lines::l ← ++ (byte) lines::l - (boolean~) lines::$7 ← (byte) lines::l < (byte) lines_cnt - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l < (byte) lines_cnt + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@1 return @@ -1444,17 +1413,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 return to:@return plot: scope:[plot] from - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (word) plot::plotter_x ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x + (word) plot::plotter_y - (byte*) plot::plotter ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (word) plot::plotter_x ← *((byte[]) plot_xhi + (byte) plot::x) w= *((byte[]) plot_xlo + (byte) plot::x) + (word) plot::plotter_y ← *((byte[]) plot_yhi + (byte) plot::y) w= *((byte[]) plot_ylo + (byte) plot::y) + (word~) plot::$0 ← (word) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1596,22 +1560,18 @@ lines: scope:[lines] from main::@1 (byte) lines::l ← (byte/signed byte/word/signed word) 0 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 - (byte~) lines::$0 ← (byte[]) lines_x *idx (byte) lines::l + (byte~) lines::$0 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y *idx (byte) lines::l - (byte~) lines::$4 ← (byte) lines::l + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y *idx (byte~) lines::$4 - (byte) line::x0 ← (byte~) lines::$0 - (byte) line::x1 ← (byte~) lines::$2 - (byte) line::y0 ← (byte~) lines::$3 - (byte) line::y1 ← (byte~) lines::$5 + (byte) line::x0 ← *((byte[]) lines_x + (byte) lines::l) + (byte) line::x1 ← *((byte[]) lines_x + (byte~) lines::$0) + (byte) line::y0 ← *((byte[]) lines_y + (byte) lines::l) + (byte) line::y1 ← *((byte[]) lines_y + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 (byte) lines::l ← ++ (byte) lines::l - (boolean~) lines::$7 ← (byte) lines::l < (byte) lines_cnt - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l < (byte) lines_cnt + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -1875,17 +1835,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 return to:@return plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (word) plot::plotter_x ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x + (word) plot::plotter_y - (byte*) plot::plotter ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (word) plot::plotter_x ← *((byte[]) plot_xhi + (byte) plot::x) w= *((byte[]) plot_xlo + (byte) plot::x) + (word) plot::plotter_y ← *((byte[]) plot_yhi + (byte) plot::y) w= *((byte[]) plot_ylo + (byte) plot::y) + (word~) plot::$0 ← (word) plot::plotter_x + (word) plot::plotter_y + (byte*) plot::plotter ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2063,18 +2018,14 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) - (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 - (byte) line::x0#0 ← (byte~) lines::$0 - (byte) line::x1#0 ← (byte~) lines::$2 - (byte) line::y0#0 ← (byte~) lines::$3 - (byte) line::y1#0 ← (byte~) lines::$5 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -2083,8 +2034,8 @@ lines::@3: scope:[lines] from lines::@1 (byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 ) (byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 ) (byte) lines::l#1 ← ++ (byte) lines::l#3 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -2538,17 +2489,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2746,18 +2692,14 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) - (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 - (byte) line::x0#0 ← (byte~) lines::$0 - (byte) line::x1#0 ← (byte~) lines::$2 - (byte) line::y0#0 ← (byte~) lines::$3 - (byte) line::y1#0 ← (byte~) lines::$5 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -2766,8 +2708,8 @@ lines::@3: scope:[lines] from lines::@1 (byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 ) (byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 ) (byte) lines::l#1 ← ++ (byte) lines::l#3 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -3221,17 +3163,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3851,11 +3788,7 @@ INITIAL SSA SYMBOL TABLE (void()) lines() (byte~) lines::$0 (byte~) lines::$1 -(byte~) lines::$2 -(byte~) lines::$3 -(byte~) lines::$4 -(byte~) lines::$5 -(boolean~) lines::$7 +(boolean~) lines::$3 (label) lines::@1 (label) lines::@3 (label) lines::@return @@ -3913,13 +3846,8 @@ INITIAL SSA SYMBOL TABLE (label) main::@5 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 +(word~) plot::$0 (byte~) plot::$1 -(byte~) plot::$2 -(byte~) plot::$3 -(word~) plot::$4 -(byte~) plot::$5 -(byte~) plot::$6 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter#0 @@ -4042,18 +3970,14 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) - (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 - (byte) line::x0#0 ← (byte~) lines::$0 - (byte) line::x1#0 ← (byte~) lines::$2 - (byte) line::y0#0 ← (byte~) lines::$3 - (byte) line::y1#0 ← (byte~) lines::$5 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -4062,8 +3986,8 @@ lines::@3: scope:[lines] from lines::@1 (byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 ) (byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 ) (byte) lines::l#1 ← ++ (byte) lines::l#3 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -4501,17 +4425,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4721,18 +4640,14 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#3 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#3 ) - (byte~) lines::$0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$2 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte~) lines::$3 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte~) lines::$5 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 - (byte) line::x0#0 ← (byte~) lines::$0 - (byte) line::x1#0 ← (byte~) lines::$2 - (byte) line::y0#0 ← (byte~) lines::$3 - (byte) line::y1#0 ← (byte~) lines::$5 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -4741,8 +4656,8 @@ lines::@3: scope:[lines] from lines::@1 (byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 ) (byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 ) (byte) lines::l#1 ← ++ (byte) lines::l#3 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -5169,17 +5084,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -5389,10 +5299,6 @@ Alias (byte) lines_cnt#5 = (byte) lines_cnt#7 (byte) lines_cnt#8 Alias (byte[]) lines_x#4 = (byte[]) lines_x#6 Alias (byte[]) lines_y#4 = (byte[]) lines_y#6 Alias (byte) lines_cnt#4 = (byte) lines_cnt#6 -Alias (byte) line::x0#0 = (byte~) lines::$0 -Alias (byte) line::x1#0 = (byte~) lines::$2 -Alias (byte) line::y0#0 = (byte~) lines::$3 -Alias (byte) line::y1#0 = (byte~) lines::$5 Alias (byte) lines::l#2 = (byte) lines::l#3 Alias (byte) lines_cnt#1 = (byte) lines_cnt#2 Alias (byte[]) lines_x#1 = (byte[]) lines_x#3 @@ -5542,20 +5448,20 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#1 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#1 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#1 ) - (byte) line::x0#0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 (byte) lines::l#1 ← ++ (byte) lines::l#2 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -5840,17 +5746,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -6129,20 +6030,20 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#1 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 lines::@3/(byte[]) lines_y#1 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 lines::@3/(byte[]) lines_x#1 ) - (byte) line::x0#0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 (byte) lines::l#1 ← ++ (byte) lines::l#2 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -6411,17 +6312,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -6700,20 +6596,20 @@ lines: scope:[lines] from main::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines_cnt#1 ← phi( lines/(byte) lines_cnt#3 ) (byte[]) lines_y#1 ← phi( lines/(byte[]) lines_y#2 ) - (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) (byte[]) lines_x#1 ← phi( lines/(byte[]) lines_x#2 ) - (byte) line::x0#0 ← (byte[]) lines_x#1 *idx (byte) lines::l#2 + (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (byte[]) lines_x#1 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (byte[]) lines_y#1 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (byte[]) lines_y#1 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((byte[]) lines_x#1 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#1 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 (byte) lines::l#1 ← ++ (byte) lines::l#2 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#1 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -6982,17 +6878,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -7180,18 +7071,18 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 (byte) lines::l#1 ← ++ (byte) lines::l#2 - (boolean~) lines::$7 ← (byte) lines::l#1 < (byte) lines_cnt#0 - if((boolean~) lines::$7) goto lines::@1 + (boolean~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#0 + if((boolean~) lines::$3) goto lines::@1 to:lines::@return lines::@return: scope:[lines] from lines::@3 return @@ -7444,17 +7335,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -7544,7 +7430,7 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 to:@end @end: scope:[] from @10 -Simple Condition (boolean~) lines::$7 if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1 +Simple Condition (boolean~) lines::$3 if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1 Simple Condition (boolean~) line::$1 if((byte) line::x0#0>=(byte) line::x1#0) goto line::@1 Simple Condition (boolean~) line::$17 if((byte) line::y0#0>=(byte) line::y1#0) goto line::@9 Simple Condition (boolean~) line::$4 if((byte) line::y0#0>=(byte) line::y1#0) goto line::@2 @@ -7622,12 +7508,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -7870,17 +7756,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -8026,12 +7907,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -8274,17 +8155,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -8405,12 +8281,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -8653,17 +8529,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -8771,12 +8642,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -9019,17 +8890,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -9134,12 +9000,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -9382,17 +9248,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -9495,12 +9356,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 (byte~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::x1#0 ← (const byte[]) lines_x#0 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 + (byte/signed byte/word/signed word) 1 - (byte) line::y1#0 ← (const byte[]) lines_y#0 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -9743,17 +9604,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -9828,21 +9684,16 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Consolidated referenced array index constant in assignment line::x1#0 Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 +Consolidated array index constant in assignment *(lines_x#0+1 + lines::$0) Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Consolidated referenced array index constant in assignment line::y1#0 +Consolidated array index constant in assignment *(lines_y#0+1 + lines::$1) Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyd::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxd::y#3 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -9878,12 +9729,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 (byte~) lines::$1 ← (byte) lines::l#2 - (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 - (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -10126,17 +9977,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -10217,11 +10063,6 @@ Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyd::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxd::y#3 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -10259,12 +10100,12 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 + (byte~) lines::$0 ← (byte) lines::l#2 (byte~) lines::$1 ← (byte) lines::l#2 - (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$1 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte~) lines::$4 ← (byte) lines::l#2 - (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte~) lines::$4 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte~) lines::$0) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte~) lines::$1) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -10507,17 +10348,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -10657,7 +10493,7 @@ Not aliassing across scopes: plot::x#3 line_ydxd::x#3 Not aliassing across scopes: plot::y#3 line_ydxd::y#3 Not aliassing across scopes: plot::x#4 plot::x#1 Not aliassing across scopes: plot::y#4 plot::y#1 -Alias (byte) lines::l#2 = (byte~) lines::$1 (byte~) lines::$4 +Alias (byte) lines::l#2 = (byte~) lines::$0 (byte~) lines::$1 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -10685,10 +10521,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(const byte) lines::l#0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -10931,17 +10767,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -11080,21 +10911,12 @@ Not aliassing across scopes: plot::x#3 line_ydxd::x#3 Not aliassing across scopes: plot::y#3 line_ydxd::y#3 Not aliassing across scopes: plot::x#4 plot::x#1 Not aliassing across scopes: plot::y#4 plot::y#1 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyd::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxd::y#3 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -11172,21 +10994,12 @@ Not aliassing across scopes: plot::x#3 line_ydxd::x#3 Not aliassing across scopes: plot::y#3 line_ydxd::y#3 Not aliassing across scopes: plot::x#4 plot::x#1 Not aliassing across scopes: plot::y#4 plot::y#1 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 -Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_xdyd::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::y#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxi::x#3 Multiple usages for variable. Not optimizing sub-constant (byte) line_ydxd::y#3 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#4 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#4 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -11260,10 +11073,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -11506,17 +11319,12 @@ line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -11848,13 +11656,8 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 +(word~) plot::$0 (byte~) plot::$1 -(byte~) plot::$2 -(byte~) plot::$3 -(word~) plot::$4 -(byte~) plot::$5 -(byte~) plot::$6 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter#0 @@ -11932,10 +11735,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@4 (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@4/(byte~) lines::l#4 ) - (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 - (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 - (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 - (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 + (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) + (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) + (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) + (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) call line param-assignment to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -12135,17 +11938,12 @@ line_ydxi::@7: scope:[line_ydxi] from line_ydxi::@5 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 (byte) plot::y#4 ← phi( line_xdyd::@1/(byte~) plot::y#5 line_xdyi::@1/(byte~) plot::y#6 line_ydxd::@1/(byte~) plot::y#7 line_ydxi::@1/(byte~) plot::y#8 ) (byte) plot::x#4 ← phi( line_xdyd::@1/(byte~) plot::x#5 line_xdyi::@1/(byte~) plot::x#6 line_ydxd::@1/(byte~) plot::x#7 line_ydxi::@1/(byte~) plot::x#8 ) - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 - (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 - (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 - (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 - (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) + (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) + (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 + (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 + (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) + *((byte*) plot::plotter#0) ← (byte~) plot::$1 to:plot::@return plot::@return: scope:[plot] from plot return @@ -12396,9 +12194,9 @@ Calls in [main] to init_screen:8 init_plot_tables:10 lines:12 Calls in [lines] to line:21 Calls in [line] to line_xdyi:41 line_ydxi:53 line_xdyd:66 line_ydxd:77 line_xdyd:92 line_ydxd:103 line_xdyi:116 line_ydxi:127 Calls in [line_ydxi] to plot:138 -Calls in [line_xdyi] to plot:178 -Calls in [line_ydxd] to plot:205 -Calls in [line_xdyd] to plot:232 +Calls in [line_xdyi] to plot:173 +Calls in [line_ydxd] to plot:200 +Calls in [line_xdyd] to plot:227 Propagating live ranges... Propagating live ranges... @@ -12453,10 +12251,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@4 [16] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@4/(byte~) lines::l#4 ) [ lines::l#2 ] - [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] - [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] - [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] - [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] + [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] + [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] + [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] + [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] [21] call line param-assignment [ lines::l#2 ] to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -12656,253 +12454,248 @@ line_ydxi::@7: scope:[line_ydxi] from line_ydxi::@5 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 [155] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte~) plot::y#5 line_xdyi::@1/(byte~) plot::y#6 line_ydxd::@1/(byte~) plot::y#7 line_ydxi::@1/(byte~) plot::y#8 ) [ plot::x#4 plot::y#4 ] [155] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte~) plot::x#5 line_xdyi::@1/(byte~) plot::x#6 line_ydxd::@1/(byte~) plot::x#7 line_ydxi::@1/(byte~) plot::x#8 ) [ plot::x#4 plot::y#4 ] - [156] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] - [157] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] - [158] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] - [159] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] - [160] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] - [161] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] - [162] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] - [163] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] - [164] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] - [165] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] - [166] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] + [156] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] + [157] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] + [158] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] + [159] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] + [160] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] + [161] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [167] return [ ] + [162] return [ ] to:@return line_xdyi: scope:[line_xdyi] from line::@17 line::@27 - [168] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte~) line_xdyi::x1#7 line::@27/(byte~) line_xdyi::x1#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [168] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte~) line_xdyi::xd#7 line::@27/(byte~) line_xdyi::xd#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [168] (byte) line_xdyi::y#5 ← phi( line::@17/(byte~) line_xdyi::y#8 line::@27/(byte~) line_xdyi::y#9 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [168] (byte) line_xdyi::x#6 ← phi( line::@17/(byte~) line_xdyi::x#8 line::@27/(byte~) line_xdyi::x#9 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [168] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte~) line_xdyi::yd#7 line::@27/(byte~) line_xdyi::yd#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [169] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] - [170] (byte~) line_xdyi::x#10 ← (byte) line_xdyi::x#6 [ line_xdyi::yd#2 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 line_xdyi::x#10 ] - [171] (byte~) line_xdyi::y#10 ← (byte) line_xdyi::y#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 line_xdyi::x#10 line_xdyi::y#10 ] - [172] (byte~) line_xdyi::e#7 ← (byte) line_xdyi::e#0 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#10 line_xdyi::y#10 line_xdyi::e#7 ] + [163] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte~) line_xdyi::x1#7 line::@27/(byte~) line_xdyi::x1#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [163] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte~) line_xdyi::xd#7 line::@27/(byte~) line_xdyi::xd#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [163] (byte) line_xdyi::y#5 ← phi( line::@17/(byte~) line_xdyi::y#8 line::@27/(byte~) line_xdyi::y#9 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [163] (byte) line_xdyi::x#6 ← phi( line::@17/(byte~) line_xdyi::x#8 line::@27/(byte~) line_xdyi::x#9 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [163] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte~) line_xdyi::yd#7 line::@27/(byte~) line_xdyi::yd#8 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [164] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] + [165] (byte~) line_xdyi::x#10 ← (byte) line_xdyi::x#6 [ line_xdyi::yd#2 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 line_xdyi::x#10 ] + [166] (byte~) line_xdyi::y#10 ← (byte) line_xdyi::y#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 line_xdyi::x#10 line_xdyi::y#10 ] + [167] (byte~) line_xdyi::e#7 ← (byte) line_xdyi::e#0 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#10 line_xdyi::y#10 line_xdyi::e#7 ] to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@6 - [173] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte~) line_xdyi::e#7 line_xdyi::@6/(byte~) line_xdyi::e#8 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [173] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte~) line_xdyi::y#10 line_xdyi::@6/(byte~) line_xdyi::y#11 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [173] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte~) line_xdyi::x#10 line_xdyi::@6/(byte~) line_xdyi::x#11 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [174] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#0 ] - [175] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#0 plot::y#0 ] - [176] (byte~) plot::x#6 ← (byte) plot::x#0 [ plot::x#6 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::y#0 ] - [177] (byte~) plot::y#6 ← (byte) plot::y#0 [ plot::x#6 plot::y#6 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [178] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [168] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte~) line_xdyi::e#7 line_xdyi::@6/(byte~) line_xdyi::e#8 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [168] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte~) line_xdyi::y#10 line_xdyi::@6/(byte~) line_xdyi::y#11 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [168] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte~) line_xdyi::x#10 line_xdyi::@6/(byte~) line_xdyi::x#11 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [169] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#0 ] + [170] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#0 plot::y#0 ] + [171] (byte~) plot::x#6 ← (byte) plot::x#0 [ plot::x#6 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::y#0 ] + [172] (byte~) plot::y#6 ← (byte) plot::y#0 [ plot::x#6 plot::y#6 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [173] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - [179] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] - [180] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] - [181] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@7 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] + [174] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] + [175] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] + [176] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@7 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] to:line_xdyi::@3 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - [182] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] - [183] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] - [184] (byte~) line_xdyi::y#12 ← (byte) line_xdyi::y#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#2 line_xdyi::y#12 ] - [185] (byte~) line_xdyi::e#9 ← (byte) line_xdyi::e#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#12 line_xdyi::e#9 ] + [177] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] + [178] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] + [179] (byte~) line_xdyi::y#12 ← (byte) line_xdyi::y#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#2 line_xdyi::y#12 ] + [180] (byte~) line_xdyi::e#9 ← (byte) line_xdyi::e#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#12 line_xdyi::e#9 ] to:line_xdyi::@2 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@7 - [186] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::e#9 line_xdyi::@7/(byte~) line_xdyi::e#10 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] - [186] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::y#12 line_xdyi::@7/(byte~) line_xdyi::y#13 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] - [187] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] - [188] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@6 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] + [181] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::e#9 line_xdyi::@7/(byte~) line_xdyi::e#10 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] + [181] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte~) line_xdyi::y#12 line_xdyi::@7/(byte~) line_xdyi::y#13 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] + [182] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] + [183] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@6 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] to:line_xdyi::@return line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 - [189] return [ ] + [184] return [ ] to:@return line_xdyi::@6: scope:[line_xdyi] from line_xdyi::@2 - [190] (byte~) line_xdyi::x#11 ← (byte) line_xdyi::x#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#11 line_xdyi::y#6 line_xdyi::e#6 ] - [191] (byte~) line_xdyi::y#11 ← (byte) line_xdyi::y#6 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#11 line_xdyi::y#11 line_xdyi::e#6 ] - [192] (byte~) line_xdyi::e#8 ← (byte) line_xdyi::e#6 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#11 line_xdyi::y#11 line_xdyi::e#8 ] + [185] (byte~) line_xdyi::x#11 ← (byte) line_xdyi::x#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#11 line_xdyi::y#6 line_xdyi::e#6 ] + [186] (byte~) line_xdyi::y#11 ← (byte) line_xdyi::y#6 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#11 line_xdyi::y#11 line_xdyi::e#6 ] + [187] (byte~) line_xdyi::e#8 ← (byte) line_xdyi::e#6 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#11 line_xdyi::y#11 line_xdyi::e#8 ] to:line_xdyi::@1 line_xdyi::@7: scope:[line_xdyi] from line_xdyi::@5 - [193] (byte~) line_xdyi::y#13 ← (byte) line_xdyi::y#3 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#13 ] - [194] (byte~) line_xdyi::e#10 ← (byte) line_xdyi::e#1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#13 line_xdyi::e#10 ] + [188] (byte~) line_xdyi::y#13 ← (byte) line_xdyi::y#3 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#13 ] + [189] (byte~) line_xdyi::e#10 ← (byte) line_xdyi::e#1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#13 line_xdyi::e#10 ] to:line_xdyi::@2 line_ydxd: scope:[line_ydxd] from line::@10 line::@6 - [195] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte~) line_ydxd::y1#7 line::@6/(byte~) line_ydxd::y1#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [195] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte~) line_ydxd::yd#7 line::@6/(byte~) line_ydxd::yd#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [195] (byte) line_ydxd::y#6 ← phi( line::@10/(byte~) line_ydxd::y#8 line::@6/(byte~) line_ydxd::y#9 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [195] (byte) line_ydxd::x#5 ← phi( line::@10/(byte~) line_ydxd::x#8 line::@6/(byte~) line_ydxd::x#9 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [195] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte~) line_ydxd::xd#7 line::@6/(byte~) line_ydxd::xd#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [196] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] - [197] (byte~) line_ydxd::x#10 ← (byte) line_ydxd::x#5 [ line_ydxd::xd#2 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 line_ydxd::x#10 ] - [198] (byte~) line_ydxd::y#10 ← (byte) line_ydxd::y#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 line_ydxd::x#10 line_ydxd::y#10 ] - [199] (byte~) line_ydxd::e#7 ← (byte) line_ydxd::e#0 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#10 line_ydxd::y#10 line_ydxd::e#7 ] + [190] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte~) line_ydxd::y1#7 line::@6/(byte~) line_ydxd::y1#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [190] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte~) line_ydxd::yd#7 line::@6/(byte~) line_ydxd::yd#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [190] (byte) line_ydxd::y#6 ← phi( line::@10/(byte~) line_ydxd::y#8 line::@6/(byte~) line_ydxd::y#9 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [190] (byte) line_ydxd::x#5 ← phi( line::@10/(byte~) line_ydxd::x#8 line::@6/(byte~) line_ydxd::x#9 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [190] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte~) line_ydxd::xd#7 line::@6/(byte~) line_ydxd::xd#8 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [191] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] + [192] (byte~) line_ydxd::x#10 ← (byte) line_ydxd::x#5 [ line_ydxd::xd#2 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 line_ydxd::x#10 ] + [193] (byte~) line_ydxd::y#10 ← (byte) line_ydxd::y#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 line_ydxd::x#10 line_ydxd::y#10 ] + [194] (byte~) line_ydxd::e#7 ← (byte) line_ydxd::e#0 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#10 line_ydxd::y#10 line_ydxd::e#7 ] to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@6 - [200] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte~) line_ydxd::e#7 line_ydxd::@6/(byte~) line_ydxd::e#8 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [200] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte~) line_ydxd::y#10 line_ydxd::@6/(byte~) line_ydxd::y#11 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [200] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte~) line_ydxd::x#10 line_ydxd::@6/(byte~) line_ydxd::x#11 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [201] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#3 ] - [202] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#3 plot::y#3 ] - [203] (byte~) plot::x#7 ← (byte) plot::x#3 [ plot::x#7 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::y#3 ] - [204] (byte~) plot::y#7 ← (byte) plot::y#3 [ plot::x#7 plot::y#7 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [205] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [195] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte~) line_ydxd::e#7 line_ydxd::@6/(byte~) line_ydxd::e#8 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [195] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte~) line_ydxd::y#10 line_ydxd::@6/(byte~) line_ydxd::y#11 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [195] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte~) line_ydxd::x#10 line_ydxd::@6/(byte~) line_ydxd::x#11 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [196] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#3 ] + [197] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#3 plot::y#3 ] + [198] (byte~) plot::x#7 ← (byte) plot::x#3 [ plot::x#7 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::y#3 ] + [199] (byte~) plot::y#7 ← (byte) plot::y#3 [ plot::x#7 plot::y#7 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [200] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - [206] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] - [207] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] - [208] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@7 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] + [201] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] + [202] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] + [203] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@7 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] to:line_ydxd::@3 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - [209] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] - [210] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] - [211] (byte~) line_ydxd::x#12 ← (byte) line_ydxd::x#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#2 line_ydxd::x#12 ] - [212] (byte~) line_ydxd::e#9 ← (byte) line_ydxd::e#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#12 line_ydxd::e#9 ] + [204] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] + [205] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] + [206] (byte~) line_ydxd::x#12 ← (byte) line_ydxd::x#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#2 line_ydxd::x#12 ] + [207] (byte~) line_ydxd::e#9 ← (byte) line_ydxd::e#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#12 line_ydxd::e#9 ] to:line_ydxd::@2 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@7 - [213] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::e#9 line_ydxd::@7/(byte~) line_ydxd::e#10 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] - [213] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::x#12 line_ydxd::@7/(byte~) line_ydxd::x#13 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] - [214] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 line_ydxd::$8 ] - [215] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] + [208] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::e#9 line_ydxd::@7/(byte~) line_ydxd::e#10 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] + [208] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte~) line_ydxd::x#12 line_ydxd::@7/(byte~) line_ydxd::x#13 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] + [209] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 line_ydxd::$8 ] + [210] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#6 line_ydxd::e#6 ] to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 - [216] return [ ] + [211] return [ ] to:@return line_ydxd::@6: scope:[line_ydxd] from line_ydxd::@2 - [217] (byte~) line_ydxd::x#11 ← (byte) line_ydxd::x#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#11 line_ydxd::y#2 line_ydxd::e#6 ] - [218] (byte~) line_ydxd::y#11 ← (byte) line_ydxd::y#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#11 line_ydxd::y#11 line_ydxd::e#6 ] - [219] (byte~) line_ydxd::e#8 ← (byte) line_ydxd::e#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#11 line_ydxd::y#11 line_ydxd::e#8 ] + [212] (byte~) line_ydxd::x#11 ← (byte) line_ydxd::x#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#11 line_ydxd::y#2 line_ydxd::e#6 ] + [213] (byte~) line_ydxd::y#11 ← (byte) line_ydxd::y#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#11 line_ydxd::y#11 line_ydxd::e#6 ] + [214] (byte~) line_ydxd::e#8 ← (byte) line_ydxd::e#6 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#11 line_ydxd::y#11 line_ydxd::e#8 ] to:line_ydxd::@1 line_ydxd::@7: scope:[line_ydxd] from line_ydxd::@5 - [220] (byte~) line_ydxd::x#13 ← (byte) line_ydxd::x#3 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#13 ] - [221] (byte~) line_ydxd::e#10 ← (byte) line_ydxd::e#1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#13 line_ydxd::e#10 ] + [215] (byte~) line_ydxd::x#13 ← (byte) line_ydxd::x#3 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#13 ] + [216] (byte~) line_ydxd::e#10 ← (byte) line_ydxd::e#1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#13 line_ydxd::e#10 ] to:line_ydxd::@2 line_xdyd: scope:[line_xdyd] from line::@20 line::@24 - [222] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte~) line_xdyd::x1#7 line::@24/(byte~) line_xdyd::x1#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [222] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte~) line_xdyd::xd#7 line::@24/(byte~) line_xdyd::xd#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [222] (byte) line_xdyd::y#5 ← phi( line::@20/(byte~) line_xdyd::y#8 line::@24/(byte~) line_xdyd::y#9 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [222] (byte) line_xdyd::x#6 ← phi( line::@20/(byte~) line_xdyd::x#8 line::@24/(byte~) line_xdyd::x#9 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [222] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte~) line_xdyd::yd#7 line::@24/(byte~) line_xdyd::yd#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [223] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] - [224] (byte~) line_xdyd::x#10 ← (byte) line_xdyd::x#6 [ line_xdyd::yd#2 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 line_xdyd::x#10 ] - [225] (byte~) line_xdyd::y#10 ← (byte) line_xdyd::y#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 line_xdyd::x#10 line_xdyd::y#10 ] - [226] (byte~) line_xdyd::e#7 ← (byte) line_xdyd::e#0 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#10 line_xdyd::y#10 line_xdyd::e#7 ] + [217] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte~) line_xdyd::x1#7 line::@24/(byte~) line_xdyd::x1#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [217] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte~) line_xdyd::xd#7 line::@24/(byte~) line_xdyd::xd#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [217] (byte) line_xdyd::y#5 ← phi( line::@20/(byte~) line_xdyd::y#8 line::@24/(byte~) line_xdyd::y#9 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [217] (byte) line_xdyd::x#6 ← phi( line::@20/(byte~) line_xdyd::x#8 line::@24/(byte~) line_xdyd::x#9 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [217] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte~) line_xdyd::yd#7 line::@24/(byte~) line_xdyd::yd#8 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [218] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] + [219] (byte~) line_xdyd::x#10 ← (byte) line_xdyd::x#6 [ line_xdyd::yd#2 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 line_xdyd::x#10 ] + [220] (byte~) line_xdyd::y#10 ← (byte) line_xdyd::y#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 line_xdyd::x#10 line_xdyd::y#10 ] + [221] (byte~) line_xdyd::e#7 ← (byte) line_xdyd::e#0 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#10 line_xdyd::y#10 line_xdyd::e#7 ] to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@6 - [227] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte~) line_xdyd::e#7 line_xdyd::@6/(byte~) line_xdyd::e#8 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [227] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte~) line_xdyd::y#10 line_xdyd::@6/(byte~) line_xdyd::y#11 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [227] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte~) line_xdyd::x#10 line_xdyd::@6/(byte~) line_xdyd::x#11 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [228] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#1 ] - [229] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#1 plot::y#1 ] - [230] (byte~) plot::x#5 ← (byte) plot::x#1 [ plot::x#5 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::y#1 ] - [231] (byte~) plot::y#5 ← (byte) plot::y#1 [ plot::x#5 plot::y#5 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [232] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [222] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte~) line_xdyd::e#7 line_xdyd::@6/(byte~) line_xdyd::e#8 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [222] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte~) line_xdyd::y#10 line_xdyd::@6/(byte~) line_xdyd::y#11 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [222] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte~) line_xdyd::x#10 line_xdyd::@6/(byte~) line_xdyd::x#11 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [223] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#1 ] + [224] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#1 plot::y#1 ] + [225] (byte~) plot::x#5 ← (byte) plot::x#1 [ plot::x#5 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::y#1 ] + [226] (byte~) plot::y#5 ← (byte) plot::y#1 [ plot::x#5 plot::y#5 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [227] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - [233] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] - [234] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] - [235] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@7 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] + [228] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] + [229] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] + [230] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@7 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] to:line_xdyd::@3 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - [236] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] - [237] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] - [238] (byte~) line_xdyd::y#12 ← (byte) line_xdyd::y#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#2 line_xdyd::y#12 ] - [239] (byte~) line_xdyd::e#9 ← (byte) line_xdyd::e#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#12 line_xdyd::e#9 ] + [231] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] + [232] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] + [233] (byte~) line_xdyd::y#12 ← (byte) line_xdyd::y#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#2 line_xdyd::y#12 ] + [234] (byte~) line_xdyd::e#9 ← (byte) line_xdyd::e#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#12 line_xdyd::e#9 ] to:line_xdyd::@2 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@7 - [240] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::e#9 line_xdyd::@7/(byte~) line_xdyd::e#10 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] - [240] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::y#12 line_xdyd::@7/(byte~) line_xdyd::y#13 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] - [241] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] - [242] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@6 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] + [235] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::e#9 line_xdyd::@7/(byte~) line_xdyd::e#10 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] + [235] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte~) line_xdyd::y#12 line_xdyd::@7/(byte~) line_xdyd::y#13 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] + [236] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] + [237] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@6 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] to:line_xdyd::@return line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 - [243] return [ ] + [238] return [ ] to:@return line_xdyd::@6: scope:[line_xdyd] from line_xdyd::@2 - [244] (byte~) line_xdyd::x#11 ← (byte) line_xdyd::x#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#11 line_xdyd::y#6 line_xdyd::e#6 ] - [245] (byte~) line_xdyd::y#11 ← (byte) line_xdyd::y#6 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#11 line_xdyd::y#11 line_xdyd::e#6 ] - [246] (byte~) line_xdyd::e#8 ← (byte) line_xdyd::e#6 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#11 line_xdyd::y#11 line_xdyd::e#8 ] + [239] (byte~) line_xdyd::x#11 ← (byte) line_xdyd::x#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#11 line_xdyd::y#6 line_xdyd::e#6 ] + [240] (byte~) line_xdyd::y#11 ← (byte) line_xdyd::y#6 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#11 line_xdyd::y#11 line_xdyd::e#6 ] + [241] (byte~) line_xdyd::e#8 ← (byte) line_xdyd::e#6 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#11 line_xdyd::y#11 line_xdyd::e#8 ] to:line_xdyd::@1 line_xdyd::@7: scope:[line_xdyd] from line_xdyd::@5 - [247] (byte~) line_xdyd::y#13 ← (byte) line_xdyd::y#3 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#13 ] - [248] (byte~) line_xdyd::e#10 ← (byte) line_xdyd::e#1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#13 line_xdyd::e#10 ] + [242] (byte~) line_xdyd::y#13 ← (byte) line_xdyd::y#3 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#13 ] + [243] (byte~) line_xdyd::e#10 ← (byte) line_xdyd::e#1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#13 line_xdyd::e#10 ] to:line_xdyd::@2 init_plot_tables: scope:[init_plot_tables] from main::@3 - [249] phi() [ ] + [244] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@9 - [250] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [250] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [251] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] - [252] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [253] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [254] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [255] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [256] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [245] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [245] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [246] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [247] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [248] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [249] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [250] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [251] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] to:init_plot_tables::@5 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - [257] phi() [ init_plot_tables::x#2 ] + [252] phi() [ init_plot_tables::x#2 ] to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_plot_tables::@5 - [258] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] - [259] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] - [260] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] + [253] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [254] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] + [255] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@11 init_plot_tables::@2 - [261] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [261] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [262] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] - [263] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] - [264] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] - [265] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [266] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] - [267] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [268] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [269] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [256] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [256] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [257] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [258] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] + [259] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] + [260] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [261] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] + [262] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [263] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] + [264] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [270] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] - [271] (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 [ init_plot_tables::y#2 init_plot_tables::yoffs#7 ] + [265] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [266] (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 [ init_plot_tables::y#2 init_plot_tables::yoffs#7 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@12 init_plot_tables::@7 - [272] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] - [273] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] - [274] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] + [267] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] + [268] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] + [269] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [275] return [ ] + [270] return [ ] to:@return init_plot_tables::@11: scope:[init_plot_tables] from init_plot_tables::@4 - [276] (byte~) init_plot_tables::y#5 ← (byte) init_plot_tables::y#1 [ init_plot_tables::y#5 init_plot_tables::yoffs#4 ] - [277] (byte*~) init_plot_tables::yoffs#5 ← (byte*) init_plot_tables::yoffs#4 [ init_plot_tables::y#5 init_plot_tables::yoffs#5 ] + [271] (byte~) init_plot_tables::y#5 ← (byte) init_plot_tables::y#1 [ init_plot_tables::y#5 init_plot_tables::yoffs#4 ] + [272] (byte*~) init_plot_tables::yoffs#5 ← (byte*) init_plot_tables::yoffs#4 [ init_plot_tables::y#5 init_plot_tables::yoffs#5 ] to:init_plot_tables::@3 init_plot_tables::@12: scope:[init_plot_tables] from init_plot_tables::@3 - [278] (byte*~) init_plot_tables::yoffs#6 ← (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#6 ] + [273] (byte*~) init_plot_tables::yoffs#6 ← (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#6 ] to:init_plot_tables::@4 init_plot_tables::@9: scope:[init_plot_tables] from init_plot_tables::@2 - [279] (byte~) init_plot_tables::x#5 ← (byte) init_plot_tables::x#1 [ init_plot_tables::x#5 init_plot_tables::bits#4 ] - [280] (byte~) init_plot_tables::bits#5 ← (byte) init_plot_tables::bits#4 [ init_plot_tables::x#5 init_plot_tables::bits#5 ] + [274] (byte~) init_plot_tables::x#5 ← (byte) init_plot_tables::x#1 [ init_plot_tables::x#5 init_plot_tables::bits#4 ] + [275] (byte~) init_plot_tables::bits#5 ← (byte) init_plot_tables::bits#4 [ init_plot_tables::x#5 init_plot_tables::bits#5 ] to:init_plot_tables::@1 init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [281] (byte~) init_plot_tables::bits#6 ← (byte) init_plot_tables::bits#1 [ init_plot_tables::x#2 init_plot_tables::bits#6 ] + [276] (byte~) init_plot_tables::bits#6 ← (byte) init_plot_tables::bits#1 [ init_plot_tables::x#2 init_plot_tables::bits#6 ] to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [282] phi() [ ] + [277] phi() [ ] to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@5 - [283] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) [ init_screen::b#2 ] - [284] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] - [285] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [286] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 [ init_screen::b#1 ] + [278] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) [ init_screen::b#2 ] + [279] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] + [280] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] + [281] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@6 - [287] (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] - [288] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] - [289] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [290] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 [ init_screen::c#1 ] + [282] (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] + [283] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] + [284] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] + [285] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [291] return [ ] + [286] return [ ] to:@return init_screen::@6: scope:[init_screen] from init_screen::@2 - [292] (byte*~) init_screen::c#3 ← (byte*) init_screen::c#1 [ init_screen::c#3 ] + [287] (byte*~) init_screen::c#3 ← (byte*) init_screen::c#1 [ init_screen::c#3 ] to:init_screen::@2 init_screen::@5: scope:[init_screen] from init_screen::@1 - [293] (byte*~) init_screen::b#3 ← (byte*) init_screen::b#1 [ init_screen::b#3 ] + [288] (byte*~) init_screen::b#3 ← (byte*) init_screen::b#1 [ init_screen::b#3 ] to:init_screen::@1 Created 51 initial phi equivalence classes @@ -12959,51 +12752,51 @@ Coalesced [151] line_ydxi::y#11 ← line_ydxi::y#2 Coalesced [152] line_ydxi::e#8 ← line_ydxi::e#6 Coalesced (already) [153] line_ydxi::x#13 ← line_ydxi::x#3 Coalesced [154] line_ydxi::e#10 ← line_ydxi::e#1 -Coalesced [170] line_xdyi::x#10 ← line_xdyi::x#6 -Coalesced [171] line_xdyi::y#10 ← line_xdyi::y#5 -Coalesced [172] line_xdyi::e#7 ← line_xdyi::e#0 -Coalesced [176] plot::x#6 ← plot::x#0 -Coalesced [177] plot::y#6 ← plot::y#0 -Coalesced [184] line_xdyi::y#12 ← line_xdyi::y#2 -Coalesced [185] line_xdyi::e#9 ← line_xdyi::e#2 -Coalesced [190] line_xdyi::x#11 ← line_xdyi::x#2 -Coalesced [191] line_xdyi::y#11 ← line_xdyi::y#6 -Coalesced [192] line_xdyi::e#8 ← line_xdyi::e#6 -Coalesced (already) [193] line_xdyi::y#13 ← line_xdyi::y#3 -Coalesced [194] line_xdyi::e#10 ← line_xdyi::e#1 -Coalesced [197] line_ydxd::x#10 ← line_ydxd::x#5 -Coalesced [198] line_ydxd::y#10 ← line_ydxd::y#6 -Coalesced [199] line_ydxd::e#7 ← line_ydxd::e#0 -Coalesced [203] plot::x#7 ← plot::x#3 -Coalesced [204] plot::y#7 ← plot::y#3 -Coalesced [211] line_ydxd::x#12 ← line_ydxd::x#2 -Coalesced [212] line_ydxd::e#9 ← line_ydxd::e#2 -Coalesced [217] line_ydxd::x#11 ← line_ydxd::x#6 -Coalesced [218] line_ydxd::y#11 ← line_ydxd::y#2 -Coalesced [219] line_ydxd::e#8 ← line_ydxd::e#6 -Coalesced (already) [220] line_ydxd::x#13 ← line_ydxd::x#3 -Coalesced [221] line_ydxd::e#10 ← line_ydxd::e#1 -Coalesced [224] line_xdyd::x#10 ← line_xdyd::x#6 -Coalesced [225] line_xdyd::y#10 ← line_xdyd::y#5 -Coalesced [226] line_xdyd::e#7 ← line_xdyd::e#0 -Coalesced [230] plot::x#5 ← plot::x#1 -Coalesced [231] plot::y#5 ← plot::y#1 -Coalesced [238] line_xdyd::y#12 ← line_xdyd::y#2 -Coalesced [239] line_xdyd::e#9 ← line_xdyd::e#2 -Coalesced [244] line_xdyd::x#11 ← line_xdyd::x#2 -Coalesced [245] line_xdyd::y#11 ← line_xdyd::y#6 -Coalesced [246] line_xdyd::e#8 ← line_xdyd::e#6 -Coalesced (already) [247] line_xdyd::y#13 ← line_xdyd::y#3 -Coalesced [248] line_xdyd::e#10 ← line_xdyd::e#1 -Coalesced [271] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 -Coalesced [276] init_plot_tables::y#5 ← init_plot_tables::y#1 -Coalesced [277] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 -Coalesced (already) [278] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 -Coalesced [279] init_plot_tables::x#5 ← init_plot_tables::x#1 -Coalesced [280] init_plot_tables::bits#5 ← init_plot_tables::bits#4 -Coalesced [281] init_plot_tables::bits#6 ← init_plot_tables::bits#1 -Coalesced [292] init_screen::c#3 ← init_screen::c#1 -Coalesced [293] init_screen::b#3 ← init_screen::b#1 +Coalesced [165] line_xdyi::x#10 ← line_xdyi::x#6 +Coalesced [166] line_xdyi::y#10 ← line_xdyi::y#5 +Coalesced [167] line_xdyi::e#7 ← line_xdyi::e#0 +Coalesced [171] plot::x#6 ← plot::x#0 +Coalesced [172] plot::y#6 ← plot::y#0 +Coalesced [179] line_xdyi::y#12 ← line_xdyi::y#2 +Coalesced [180] line_xdyi::e#9 ← line_xdyi::e#2 +Coalesced [185] line_xdyi::x#11 ← line_xdyi::x#2 +Coalesced [186] line_xdyi::y#11 ← line_xdyi::y#6 +Coalesced [187] line_xdyi::e#8 ← line_xdyi::e#6 +Coalesced (already) [188] line_xdyi::y#13 ← line_xdyi::y#3 +Coalesced [189] line_xdyi::e#10 ← line_xdyi::e#1 +Coalesced [192] line_ydxd::x#10 ← line_ydxd::x#5 +Coalesced [193] line_ydxd::y#10 ← line_ydxd::y#6 +Coalesced [194] line_ydxd::e#7 ← line_ydxd::e#0 +Coalesced [198] plot::x#7 ← plot::x#3 +Coalesced [199] plot::y#7 ← plot::y#3 +Coalesced [206] line_ydxd::x#12 ← line_ydxd::x#2 +Coalesced [207] line_ydxd::e#9 ← line_ydxd::e#2 +Coalesced [212] line_ydxd::x#11 ← line_ydxd::x#6 +Coalesced [213] line_ydxd::y#11 ← line_ydxd::y#2 +Coalesced [214] line_ydxd::e#8 ← line_ydxd::e#6 +Coalesced (already) [215] line_ydxd::x#13 ← line_ydxd::x#3 +Coalesced [216] line_ydxd::e#10 ← line_ydxd::e#1 +Coalesced [219] line_xdyd::x#10 ← line_xdyd::x#6 +Coalesced [220] line_xdyd::y#10 ← line_xdyd::y#5 +Coalesced [221] line_xdyd::e#7 ← line_xdyd::e#0 +Coalesced [225] plot::x#5 ← plot::x#1 +Coalesced [226] plot::y#5 ← plot::y#1 +Coalesced [233] line_xdyd::y#12 ← line_xdyd::y#2 +Coalesced [234] line_xdyd::e#9 ← line_xdyd::e#2 +Coalesced [239] line_xdyd::x#11 ← line_xdyd::x#2 +Coalesced [240] line_xdyd::y#11 ← line_xdyd::y#6 +Coalesced [241] line_xdyd::e#8 ← line_xdyd::e#6 +Coalesced (already) [242] line_xdyd::y#13 ← line_xdyd::y#3 +Coalesced [243] line_xdyd::e#10 ← line_xdyd::e#1 +Coalesced [266] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 +Coalesced [271] init_plot_tables::y#5 ← init_plot_tables::y#1 +Coalesced [272] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 +Coalesced (already) [273] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 +Coalesced [274] init_plot_tables::x#5 ← init_plot_tables::x#1 +Coalesced [275] init_plot_tables::bits#5 ← init_plot_tables::bits#4 +Coalesced [276] init_plot_tables::bits#6 ← init_plot_tables::bits#1 +Coalesced [287] init_screen::c#3 ← init_screen::c#1 +Coalesced [288] init_screen::b#3 ← init_screen::b#1 Coalesced down to 33 phi equivalence classes Culled Empty Block (label) lines::@4 Culled Empty Block (label) line_ydxi::@6 @@ -13078,10 +12871,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 [16] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] - [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] - [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] - [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] - [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] + [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] + [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] + [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] + [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] [21] call line param-assignment [ lines::l#2 ] to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -13222,184 +13015,179 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 [102] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] [102] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] - [103] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] - [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] - [105] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] - [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] - [107] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] - [108] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] - [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] - [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] - [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] - [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] - [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] + [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] + [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] + [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] + [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] + [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] + [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [114] return [ ] + [109] return [ ] to:@return line_xdyi: scope:[line_xdyi] from line::@17 line::@27 - [115] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [115] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [115] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [115] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [115] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] - [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] + [110] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [110] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [110] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [110] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [110] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] + [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 - [117] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [117] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [117] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [118] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [119] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] - [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [112] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [112] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [112] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [113] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [114] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] + [115] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] - [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] - [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] + [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] + [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] + [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] to:line_xdyi::@3 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] - [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] + [119] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] + [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] to:line_xdyi::@2 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 - [126] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] - [126] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] - [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] - [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] + [121] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] + [121] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] + [122] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] + [123] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] to:line_xdyi::@return line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 - [129] return [ ] + [124] return [ ] to:@return line_ydxd: scope:[line_ydxd] from line::@10 line::@6 - [130] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [130] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [130] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [130] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [130] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] - [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] + [125] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [125] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [125] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [125] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [125] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] + [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 - [132] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [132] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [132] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [133] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [134] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] - [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [127] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [127] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [127] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [128] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [129] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] + [130] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] - [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] - [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] + [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] + [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] + [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] to:line_ydxd::@3 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] - [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] + [134] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] + [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] to:line_ydxd::@2 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 - [141] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] - [141] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] - [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] - [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] + [136] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] + [136] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] + [137] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] + [138] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 - [144] return [ ] + [139] return [ ] to:@return line_xdyd: scope:[line_xdyd] from line::@20 line::@24 - [145] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [145] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [145] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [145] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [145] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] - [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] + [140] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [140] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [140] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [140] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [140] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] + [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 - [147] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [147] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [147] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [148] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [149] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] - [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [142] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [142] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [142] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [143] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [144] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] + [145] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] - [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] - [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] + [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] + [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] + [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] to:line_xdyd::@3 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] - [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] + [149] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] + [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] to:line_xdyd::@2 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 - [156] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] - [156] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] - [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] - [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] + [151] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] + [151] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] + [152] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] + [153] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] to:line_xdyd::@return line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 - [159] return [ ] + [154] return [ ] to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - [160] phi() [ ] + [155] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] - [163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [156] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [156] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [158] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [161] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [162] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] - [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] - [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] + [163] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [164] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] + [165] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] - [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] - [174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] - [175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] - [177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [166] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [166] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [168] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] + [169] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] + [170] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] + [172] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] + [174] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [181] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] - [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] - [183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] + [176] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] + [177] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] + [178] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [184] return [ ] + [179] return [ ] to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [185] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [180] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [186] phi() [ ] + [181] phi() [ ] to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [187] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] - [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] - [189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] + [182] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] + [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] + [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] + [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [191] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] - [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] - [193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] + [186] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] + [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] + [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] + [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [195] return [ ] + [190] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -13438,10 +13226,10 @@ lines: scope:[lines] from main::@1 to:lines::@1 lines::@1: scope:[lines] from lines lines::@3 [16] (byte) lines::l#2 ← phi( lines/(byte/signed byte/word/signed word) 0 lines::@3/(byte) lines::l#1 ) [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] ) - [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) - [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) - [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) - [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) + [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) + [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) + [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) + [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) [21] call line param-assignment [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] ) to:lines::@3 lines::@3: scope:[lines] from lines::@1 @@ -13580,186 +13368,181 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2 [101] return [ ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 ] ) to:@return plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1 - [102] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) - [102] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) - [103] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] ) - [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] ) - [105] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) - [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ) - [107] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ) - [108] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) - [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] ) - [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) - [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] ) - [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] ) - [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [102] (byte) plot::y#4 ← phi( line_xdyd::@1/(byte) plot::y#1 line_xdyi::@1/(byte) plot::y#0 line_ydxd::@1/(byte) plot::y#3 line_ydxi::@1/(byte) plot::y#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) + [102] (byte) plot::x#4 ← phi( line_xdyd::@1/(byte) plot::x#1 line_xdyi::@1/(byte) plot::x#0 line_ydxd::@1/(byte) plot::x#3 line_ydxi::@1/(byte) plot::x#2 ) [ plot::x#4 plot::y#4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 ] ) + [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) + [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) + [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] ) + [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) + [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] ) + [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) to:plot::@return plot::@return: scope:[plot] from plot - [114] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [109] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) to:@return line_xdyi: scope:[line_xdyi] from line::@17 line::@27 - [115] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [115] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) - [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) + [110] (byte) line_xdyi::x1#6 ← phi( line::@17/(byte) line_xdyi::x1#0 line::@27/(byte) line_xdyi::x1#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::xd#5 ← phi( line::@17/(byte) line_xdyi::xd#0 line::@27/(byte) line_xdyi::xd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::y#5 ← phi( line::@17/(byte) line_xdyi::y#0 line::@27/(byte) line_xdyi::y#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::x#6 ← phi( line::@17/(byte) line_xdyi::x#0 line::@27/(byte) line_xdyi::x#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [110] (byte) line_xdyi::yd#2 ← phi( line::@17/(byte) line_xdyi::yd#0 line::@27/(byte) line_xdyi::yd#1 ) [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] ) + [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) to:line_xdyi::@1 line_xdyi::@1: scope:[line_xdyi] from line_xdyi line_xdyi::@2 - [117] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [117] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [117] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [118] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [119] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [112] (byte) line_xdyi::e#3 ← phi( line_xdyi/(byte) line_xdyi::e#0 line_xdyi::@2/(byte) line_xdyi::e#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [112] (byte) line_xdyi::y#3 ← phi( line_xdyi/(byte) line_xdyi::y#5 line_xdyi::@2/(byte) line_xdyi::y#6 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [112] (byte) line_xdyi::x#3 ← phi( line_xdyi/(byte) line_xdyi::x#6 line_xdyi::@2/(byte) line_xdyi::x#2 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [113] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [114] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + [115] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) to:line_xdyi::@5 line_xdyi::@5: scope:[line_xdyi] from line_xdyi::@1 - [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) - [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) - [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) + [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) + [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) + [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) to:line_xdyi::@3 line_xdyi::@3: scope:[line_xdyi] from line_xdyi::@5 - [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) - [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) + [119] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) + [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) to:line_xdyi::@2 line_xdyi::@2: scope:[line_xdyi] from line_xdyi::@3 line_xdyi::@5 - [126] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) - [126] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) - [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) - [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) + [121] (byte) line_xdyi::e#6 ← phi( line_xdyi::@3/(byte) line_xdyi::e#2 line_xdyi::@5/(byte) line_xdyi::e#1 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) + [121] (byte) line_xdyi::y#6 ← phi( line_xdyi::@3/(byte) line_xdyi::y#2 line_xdyi::@5/(byte) line_xdyi::y#3 ) [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) + [122] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) + [123] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) to:line_xdyi::@return line_xdyi::@return: scope:[line_xdyi] from line_xdyi::@2 - [129] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) + [124] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) to:@return line_ydxd: scope:[line_ydxd] from line::@10 line::@6 - [130] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [130] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) - [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) + [125] (byte) line_ydxd::y1#6 ← phi( line::@10/(byte) line_ydxd::y1#1 line::@6/(byte) line_ydxd::y1#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::yd#5 ← phi( line::@10/(byte) line_ydxd::yd#1 line::@6/(byte) line_ydxd::yd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::y#6 ← phi( line::@10/(byte) line_ydxd::y#1 line::@6/(byte) line_ydxd::y#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::x#5 ← phi( line::@10/(byte) line_ydxd::x#1 line::@6/(byte) line_ydxd::x#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [125] (byte) line_ydxd::xd#2 ← phi( line::@10/(byte) line_ydxd::xd#1 line::@6/(byte) line_ydxd::xd#0 ) [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] ) + [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) to:line_ydxd::@1 line_ydxd::@1: scope:[line_ydxd] from line_ydxd line_ydxd::@2 - [132] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [132] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [132] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [133] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [134] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [127] (byte) line_ydxd::e#3 ← phi( line_ydxd/(byte) line_ydxd::e#0 line_ydxd::@2/(byte) line_ydxd::e#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [127] (byte) line_ydxd::y#3 ← phi( line_ydxd/(byte) line_ydxd::y#6 line_ydxd::@2/(byte) line_ydxd::y#2 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [127] (byte) line_ydxd::x#3 ← phi( line_ydxd/(byte) line_ydxd::x#5 line_ydxd::@2/(byte) line_ydxd::x#6 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [128] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [129] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + [130] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) to:line_ydxd::@5 line_ydxd::@5: scope:[line_ydxd] from line_ydxd::@1 - [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) - [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) - [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) + [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) + [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) + [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) to:line_ydxd::@3 line_ydxd::@3: scope:[line_ydxd] from line_ydxd::@5 - [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) - [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) + [134] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) + [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) to:line_ydxd::@2 line_ydxd::@2: scope:[line_ydxd] from line_ydxd::@3 line_ydxd::@5 - [141] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) - [141] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) - [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) - [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) + [136] (byte) line_ydxd::e#6 ← phi( line_ydxd::@3/(byte) line_ydxd::e#2 line_ydxd::@5/(byte) line_ydxd::e#1 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) + [136] (byte) line_ydxd::x#6 ← phi( line_ydxd::@3/(byte) line_ydxd::x#2 line_ydxd::@5/(byte) line_ydxd::x#3 ) [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) + [137] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) + [138] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) to:line_ydxd::@return line_ydxd::@return: scope:[line_ydxd] from line_ydxd::@2 - [144] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) + [139] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) to:@return line_xdyd: scope:[line_xdyd] from line::@20 line::@24 - [145] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [145] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) - [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) + [140] (byte) line_xdyd::x1#6 ← phi( line::@20/(byte) line_xdyd::x1#0 line::@24/(byte) line_xdyd::x1#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::xd#5 ← phi( line::@20/(byte) line_xdyd::xd#0 line::@24/(byte) line_xdyd::xd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::y#5 ← phi( line::@20/(byte) line_xdyd::y#0 line::@24/(byte) line_xdyd::y#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::x#6 ← phi( line::@20/(byte) line_xdyd::x#0 line::@24/(byte) line_xdyd::x#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [140] (byte) line_xdyd::yd#2 ← phi( line::@20/(byte) line_xdyd::yd#0 line::@24/(byte) line_xdyd::yd#1 ) [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] ) + [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) to:line_xdyd::@1 line_xdyd::@1: scope:[line_xdyd] from line_xdyd line_xdyd::@2 - [147] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [147] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [147] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [148] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [149] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [142] (byte) line_xdyd::e#3 ← phi( line_xdyd/(byte) line_xdyd::e#0 line_xdyd::@2/(byte) line_xdyd::e#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [142] (byte) line_xdyd::y#3 ← phi( line_xdyd/(byte) line_xdyd::y#5 line_xdyd::@2/(byte) line_xdyd::y#6 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [142] (byte) line_xdyd::x#3 ← phi( line_xdyd/(byte) line_xdyd::x#6 line_xdyd::@2/(byte) line_xdyd::x#2 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [143] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [144] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + [145] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) to:line_xdyd::@5 line_xdyd::@5: scope:[line_xdyd] from line_xdyd::@1 - [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) - [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) - [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) + [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) + [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) + [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) to:line_xdyd::@3 line_xdyd::@3: scope:[line_xdyd] from line_xdyd::@5 - [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) - [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) + [149] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) + [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) to:line_xdyd::@2 line_xdyd::@2: scope:[line_xdyd] from line_xdyd::@3 line_xdyd::@5 - [156] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) - [156] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) - [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) - [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) + [151] (byte) line_xdyd::e#6 ← phi( line_xdyd::@3/(byte) line_xdyd::e#2 line_xdyd::@5/(byte) line_xdyd::e#1 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) + [151] (byte) line_xdyd::y#6 ← phi( line_xdyd::@3/(byte) line_xdyd::y#2 line_xdyd::@5/(byte) line_xdyd::y#3 ) [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) + [152] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) + [153] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) to:line_xdyd::@return line_xdyd::@return: scope:[line_xdyd] from line_xdyd::@2 - [159] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) + [154] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) to:@return init_plot_tables: scope:[init_plot_tables] from main::@3 - [160] phi() [ ] ( main:2::init_plot_tables:10 [ ] ) + [155] phi() [ ] ( main:2::init_plot_tables:10 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) - [163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [156] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [156] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [158] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [161] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [162] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) - [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [163] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [164] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [165] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [171] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) - [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) - [174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) - [175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) - [177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [166] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [166] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [168] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) + [169] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) + [170] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) + [172] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [174] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [181] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) - [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [176] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) + [177] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [178] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [184] return [ ] ( main:2::init_plot_tables:10 [ ] ) + [179] return [ ] ( main:2::init_plot_tables:10 [ ] ) to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [185] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [180] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [186] phi() [ ] ( main:2::init_screen:8 [ ] ) + [181] phi() [ ] ( main:2::init_screen:8 [ ] ) to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [187] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) - [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [182] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [191] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) - [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [186] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [195] return [ ] ( main:2::init_screen:8 [ ] ) + [190] return [ ] ( main:2::init_screen:8 [ ] ) to:@return DOMINATORS @@ -14092,17 +13875,12 @@ VARIABLE REGISTER WEIGHTS (byte[]) lines_y (void()) main() (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 2.0 +(word~) plot::$0 4.0 (byte~) plot::$1 4.0 -(byte~) plot::$2 2.0 -(byte~) plot::$3 4.0 -(word~) plot::$4 4.0 -(byte~) plot::$5 4.0 -(byte~) plot::$6 4.0 (byte*) plot::plotter -(byte*) plot::plotter#0 2.0 +(byte*) plot::plotter#0 3.0 (word) plot::plotter_x -(word) plot::plotter_x#0 1.0 +(word) plot::plotter_x#0 2.0 (word) plot::plotter_y (word) plot::plotter_y#0 4.0 (byte) plot::x @@ -14110,13 +13888,13 @@ VARIABLE REGISTER WEIGHTS (byte) plot::x#1 11.0 (byte) plot::x#2 11.0 (byte) plot::x#3 11.0 -(byte) plot::x#4 5.555555555555556 +(byte) plot::x#4 10.000000000000002 (byte) plot::y (byte) plot::y#0 22.0 (byte) plot::y#1 22.0 (byte) plot::y#2 22.0 (byte) plot::y#3 22.0 -(byte) plot::y#4 9.600000000000001 +(byte) plot::y#4 24.0 (byte[]) plot_bit (byte[]) plot_xhi (byte[]) plot_xlo @@ -14168,16 +13946,11 @@ Added variable line::xd#0 to zero page equivalence class [ line::xd#0 ] Added variable line::yd#3 to zero page equivalence class [ line::yd#3 ] Added variable line::yd#10 to zero page equivalence class [ line::yd#10 ] Added variable line_ydxi::$8 to zero page equivalence class [ line_ydxi::$8 ] -Added variable plot::$0 to zero page equivalence class [ plot::$0 ] -Added variable plot::$1 to zero page equivalence class [ plot::$1 ] Added variable plot::plotter_x#0 to zero page equivalence class [ plot::plotter_x#0 ] -Added variable plot::$2 to zero page equivalence class [ plot::$2 ] -Added variable plot::$3 to zero page equivalence class [ plot::$3 ] Added variable plot::plotter_y#0 to zero page equivalence class [ plot::plotter_y#0 ] -Added variable plot::$4 to zero page equivalence class [ plot::$4 ] +Added variable plot::$0 to zero page equivalence class [ plot::$0 ] Added variable plot::plotter#0 to zero page equivalence class [ plot::plotter#0 ] -Added variable plot::$5 to zero page equivalence class [ plot::$5 ] -Added variable plot::$6 to zero page equivalence class [ plot::$6 ] +Added variable plot::$1 to zero page equivalence class [ plot::$1 ] Added variable line_xdyi::$8 to zero page equivalence class [ line_xdyi::$8 ] Added variable line_ydxd::$8 to zero page equivalence class [ line_ydxd::$8 ] Added variable line_xdyd::$8 to zero page equivalence class [ line_xdyd::$8 ] @@ -14232,16 +14005,11 @@ Complete equivalence classes [ line::yd#3 ] [ line::yd#10 ] [ line_ydxi::$8 ] -[ plot::$0 ] -[ plot::$1 ] [ plot::plotter_x#0 ] -[ plot::$2 ] -[ plot::$3 ] [ plot::plotter_y#0 ] -[ plot::$4 ] +[ plot::$0 ] [ plot::plotter#0 ] -[ plot::$5 ] -[ plot::$6 ] +[ plot::$1 ] [ line_xdyi::$8 ] [ line_ydxd::$8 ] [ line_xdyd::$8 ] @@ -14295,25 +14063,20 @@ Allocated zp ZP_BYTE:45 [ line::xd#0 ] Allocated zp ZP_BYTE:46 [ line::yd#3 ] Allocated zp ZP_BYTE:47 [ line::yd#10 ] Allocated zp ZP_BYTE:48 [ line_ydxi::$8 ] -Allocated zp ZP_BYTE:49 [ plot::$0 ] -Allocated zp ZP_BYTE:50 [ plot::$1 ] -Allocated zp ZP_WORD:51 [ plot::plotter_x#0 ] -Allocated zp ZP_BYTE:53 [ plot::$2 ] -Allocated zp ZP_BYTE:54 [ plot::$3 ] -Allocated zp ZP_WORD:55 [ plot::plotter_y#0 ] -Allocated zp ZP_WORD:57 [ plot::$4 ] -Allocated zp ZP_WORD:59 [ plot::plotter#0 ] -Allocated zp ZP_BYTE:61 [ plot::$5 ] -Allocated zp ZP_BYTE:62 [ plot::$6 ] -Allocated zp ZP_BYTE:63 [ line_xdyi::$8 ] -Allocated zp ZP_BYTE:64 [ line_ydxd::$8 ] -Allocated zp ZP_BYTE:65 [ line_xdyd::$8 ] -Allocated zp ZP_BYTE:66 [ init_plot_tables::$0 ] -Allocated zp ZP_BYTE:67 [ init_plot_tables::$6 ] -Allocated zp ZP_BYTE:68 [ init_plot_tables::$7 ] -Allocated zp ZP_BYTE:69 [ init_plot_tables::$8 ] -Allocated zp ZP_BYTE:70 [ init_plot_tables::$9 ] -Allocated zp ZP_BYTE:71 [ init_plot_tables::$10 ] +Allocated zp ZP_WORD:49 [ plot::plotter_x#0 ] +Allocated zp ZP_WORD:51 [ plot::plotter_y#0 ] +Allocated zp ZP_WORD:53 [ plot::$0 ] +Allocated zp ZP_WORD:55 [ plot::plotter#0 ] +Allocated zp ZP_BYTE:57 [ plot::$1 ] +Allocated zp ZP_BYTE:58 [ line_xdyi::$8 ] +Allocated zp ZP_BYTE:59 [ line_ydxd::$8 ] +Allocated zp ZP_BYTE:60 [ line_xdyd::$8 ] +Allocated zp ZP_BYTE:61 [ init_plot_tables::$0 ] +Allocated zp ZP_BYTE:62 [ init_plot_tables::$6 ] +Allocated zp ZP_BYTE:63 [ init_plot_tables::$7 ] +Allocated zp ZP_BYTE:64 [ init_plot_tables::$8 ] +Allocated zp ZP_BYTE:65 [ init_plot_tables::$9 ] +Allocated zp ZP_BYTE:66 [ init_plot_tables::$10 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -14366,7 +14129,7 @@ main: { lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400) sta D018 //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] ) - //SEG14 [186] phi from main to init_screen [phi:main->init_screen] + //SEG14 [181] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG15 [9] phi from main to main::@3 [phi:main->main::@3] @@ -14375,7 +14138,7 @@ main: { //SEG16 main::@3 b3: //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] ) - //SEG18 [160] phi from main::@3 to init_plot_tables [phi:main::@3->init_plot_tables] + //SEG18 [155] phi from main::@3 to init_plot_tables [phi:main::@3->init_plot_tables] init_plot_tables_from_b3: jsr init_plot_tables //SEG19 [11] phi from main::@3 main::@5 to main::@1 [phi:main::@3/main::@5->main::@1] @@ -14414,19 +14177,19 @@ lines: { jmp b1 //SEG32 lines::@1 b1: - //SEG33 [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG33 [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_x,x sta line.x0 - //SEG34 [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_x+1,x sta line.x1 - //SEG35 [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_y,x sta line.y0 - //SEG36 [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_y+1,x sta line.y1 @@ -14506,13 +14269,13 @@ line: { lda yd_1 sta line_xdyi.yd //SEG57 [35] call line_xdyi param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG58 [115] phi from line::@17 to line_xdyi [phi:line::@17->line_xdyi] + //SEG58 [110] phi from line::@17 to line_xdyi [phi:line::@17->line_xdyi] line_xdyi_from_b17: - //SEG59 [115] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#0 [phi:line::@17->line_xdyi#0] -- register_copy - //SEG60 [115] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#0 [phi:line::@17->line_xdyi#1] -- register_copy - //SEG61 [115] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#0 [phi:line::@17->line_xdyi#2] -- register_copy - //SEG62 [115] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#0 [phi:line::@17->line_xdyi#3] -- register_copy - //SEG63 [115] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#0 [phi:line::@17->line_xdyi#4] -- register_copy + //SEG59 [110] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#0 [phi:line::@17->line_xdyi#0] -- register_copy + //SEG60 [110] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#0 [phi:line::@17->line_xdyi#1] -- register_copy + //SEG61 [110] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#0 [phi:line::@17->line_xdyi#2] -- register_copy + //SEG62 [110] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#0 [phi:line::@17->line_xdyi#3] -- register_copy + //SEG63 [110] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#0 [phi:line::@17->line_xdyi#4] -- register_copy jsr line_xdyi jmp breturn //SEG64 line::@return @@ -14576,13 +14339,13 @@ line: { lda yd sta line_xdyd.yd //SEG88 [50] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG89 [145] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] + //SEG89 [140] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] line_xdyd_from_b20: - //SEG90 [145] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy - //SEG91 [145] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#0 [phi:line::@20->line_xdyd#1] -- register_copy - //SEG92 [145] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#0 [phi:line::@20->line_xdyd#2] -- register_copy - //SEG93 [145] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#0 [phi:line::@20->line_xdyd#3] -- register_copy - //SEG94 [145] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#0 [phi:line::@20->line_xdyd#4] -- register_copy + //SEG90 [140] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy + //SEG91 [140] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#0 [phi:line::@20->line_xdyd#1] -- register_copy + //SEG92 [140] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#0 [phi:line::@20->line_xdyd#2] -- register_copy + //SEG93 [140] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#0 [phi:line::@20->line_xdyd#3] -- register_copy + //SEG94 [140] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#0 [phi:line::@20->line_xdyd#4] -- register_copy jsr line_xdyd jmp breturn //SEG95 line::@6 @@ -14603,13 +14366,13 @@ line: { lda xd_1 sta line_ydxd.xd //SEG101 [56] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG102 [130] phi from line::@6 to line_ydxd [phi:line::@6->line_ydxd] + //SEG102 [125] phi from line::@6 to line_ydxd [phi:line::@6->line_ydxd] line_ydxd_from_b6: - //SEG103 [130] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#0 [phi:line::@6->line_ydxd#0] -- register_copy - //SEG104 [130] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#0 [phi:line::@6->line_ydxd#1] -- register_copy - //SEG105 [130] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#0 [phi:line::@6->line_ydxd#2] -- register_copy - //SEG106 [130] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#0 [phi:line::@6->line_ydxd#3] -- register_copy - //SEG107 [130] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#0 [phi:line::@6->line_ydxd#4] -- register_copy + //SEG103 [125] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#0 [phi:line::@6->line_ydxd#0] -- register_copy + //SEG104 [125] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#0 [phi:line::@6->line_ydxd#1] -- register_copy + //SEG105 [125] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#0 [phi:line::@6->line_ydxd#2] -- register_copy + //SEG106 [125] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#0 [phi:line::@6->line_ydxd#3] -- register_copy + //SEG107 [125] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#0 [phi:line::@6->line_ydxd#4] -- register_copy jsr line_ydxd jmp breturn //SEG108 line::@1 @@ -14654,13 +14417,13 @@ line: { lda yd_3 sta line_xdyd.yd //SEG120 [66] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG121 [145] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] + //SEG121 [140] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] line_xdyd_from_b24: - //SEG122 [145] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy - //SEG123 [145] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#1 [phi:line::@24->line_xdyd#1] -- register_copy - //SEG124 [145] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#1 [phi:line::@24->line_xdyd#2] -- register_copy - //SEG125 [145] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#1 [phi:line::@24->line_xdyd#3] -- register_copy - //SEG126 [145] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#1 [phi:line::@24->line_xdyd#4] -- register_copy + //SEG122 [140] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy + //SEG123 [140] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#1 [phi:line::@24->line_xdyd#1] -- register_copy + //SEG124 [140] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#1 [phi:line::@24->line_xdyd#2] -- register_copy + //SEG125 [140] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#1 [phi:line::@24->line_xdyd#3] -- register_copy + //SEG126 [140] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#1 [phi:line::@24->line_xdyd#4] -- register_copy jsr line_xdyd jmp breturn //SEG127 line::@10 @@ -14681,13 +14444,13 @@ line: { lda xd sta line_ydxd.xd //SEG133 [72] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG134 [130] phi from line::@10 to line_ydxd [phi:line::@10->line_ydxd] + //SEG134 [125] phi from line::@10 to line_ydxd [phi:line::@10->line_ydxd] line_ydxd_from_b10: - //SEG135 [130] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#1 [phi:line::@10->line_ydxd#0] -- register_copy - //SEG136 [130] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#1 [phi:line::@10->line_ydxd#1] -- register_copy - //SEG137 [130] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#1 [phi:line::@10->line_ydxd#2] -- register_copy - //SEG138 [130] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#1 [phi:line::@10->line_ydxd#3] -- register_copy - //SEG139 [130] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#1 [phi:line::@10->line_ydxd#4] -- register_copy + //SEG135 [125] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#1 [phi:line::@10->line_ydxd#0] -- register_copy + //SEG136 [125] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#1 [phi:line::@10->line_ydxd#1] -- register_copy + //SEG137 [125] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#1 [phi:line::@10->line_ydxd#2] -- register_copy + //SEG138 [125] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#1 [phi:line::@10->line_ydxd#3] -- register_copy + //SEG139 [125] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#1 [phi:line::@10->line_ydxd#4] -- register_copy jsr line_ydxd jmp breturn //SEG140 line::@9 @@ -14720,13 +14483,13 @@ line: { lda yd_10 sta line_xdyi.yd //SEG149 [80] call line_xdyi param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG150 [115] phi from line::@27 to line_xdyi [phi:line::@27->line_xdyi] + //SEG150 [110] phi from line::@27 to line_xdyi [phi:line::@27->line_xdyi] line_xdyi_from_b27: - //SEG151 [115] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#1 [phi:line::@27->line_xdyi#0] -- register_copy - //SEG152 [115] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#1 [phi:line::@27->line_xdyi#1] -- register_copy - //SEG153 [115] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#1 [phi:line::@27->line_xdyi#2] -- register_copy - //SEG154 [115] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#1 [phi:line::@27->line_xdyi#3] -- register_copy - //SEG155 [115] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#1 [phi:line::@27->line_xdyi#4] -- register_copy + //SEG151 [110] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#1 [phi:line::@27->line_xdyi#0] -- register_copy + //SEG152 [110] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#1 [phi:line::@27->line_xdyi#1] -- register_copy + //SEG153 [110] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#1 [phi:line::@27->line_xdyi#2] -- register_copy + //SEG154 [110] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#1 [phi:line::@27->line_xdyi#3] -- register_copy + //SEG155 [110] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#1 [phi:line::@27->line_xdyi#4] -- register_copy jsr line_xdyi jmp breturn //SEG156 line::@13 @@ -14840,433 +14603,411 @@ line_ydxi: { } //SEG197 plot plot: { - .label _0 = $31 - .label _1 = $32 - .label _2 = $35 - .label _3 = $36 - .label _4 = $39 - .label _5 = $3d - .label _6 = $3e + .label _0 = $35 + .label _1 = $39 .label x = 9 .label y = $a - .label plotter_x = $33 - .label plotter_y = $37 - .label plotter = $3b - //SEG198 [103] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx x + .label plotter_x = $31 + .label plotter_y = $33 + .label plotter = $37 + //SEG198 [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 lda plot_xhi,x - sta _0 - //SEG199 [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx x + sta x+1 lda plot_xlo,x - sta _1 - //SEG200 [105] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=vbuz2_word_vbuz3 - lda _1 - sta plotter_x - lda _0 - sta plotter_x+1 - //SEG201 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx y + sta x + ldx x + //SEG199 [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 lda plot_yhi,x - sta _2 - //SEG202 [107] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx y + sta y+1 lda plot_ylo,x - sta _3 - //SEG203 [108] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) -- vwuz1=vbuz2_word_vbuz3 - lda _3 - sta plotter_y - lda _2 - sta plotter_y+1 - //SEG204 [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] ) -- vwuz1=vwuz2_plus_vwuz3 - lda _4 + sta y + ldx y + //SEG200 [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] ) -- vwuz1=vwuz2_plus_vwuz3 + lda _0 clc adc plotter_x sta plotter_y - lda _4+1 + lda _0+1 adc plotter_x+1 sta plotter_y+1 - //SEG205 [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) -- pbuz1=_ptrby_vwuz2 - lda _4 + //SEG201 [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) -- pbuz1=_ptrby_vwuz2 + lda _0 sta plotter - lda _4+1 + lda _0+1 sta plotter+1 - //SEG206 [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx x - lda plot_bit,x - sta _5 - //SEG207 [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] ) -- vbuz1=_deref_pbuz2_bor_vbuz3 + //SEG202 [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] ) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (plotter),y - ora _5 - sta _6 - //SEG208 [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuz2 + ldx x + ora plot_bit,x + sta _1 + //SEG203 [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuz2 ldy #0 - lda _6 + lda _1 sta (plotter),y jmp breturn - //SEG209 plot::@return + //SEG204 plot::@return breturn: - //SEG210 [114] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG205 [109] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) rts } -//SEG211 line_xdyi +//SEG206 line_xdyi line_xdyi: { - .label _8 = $3f + .label _8 = $3a .label x = $e .label y = $f .label x1 = $d .label xd = $c .label yd = $b .label e = $10 - //SEG212 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG207 [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG213 [117] phi from line_xdyi line_xdyi::@2 to line_xdyi::@1 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1] + //SEG208 [112] phi from line_xdyi line_xdyi::@2 to line_xdyi::@1 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1] b1_from_line_xdyi: b1_from_b2: - //SEG214 [117] phi (byte) line_xdyi::e#3 = (byte) line_xdyi::e#0 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#0] -- register_copy - //SEG215 [117] phi (byte) line_xdyi::y#3 = (byte) line_xdyi::y#5 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#1] -- register_copy - //SEG216 [117] phi (byte) line_xdyi::x#3 = (byte) line_xdyi::x#6 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#2] -- register_copy + //SEG209 [112] phi (byte) line_xdyi::e#3 = (byte) line_xdyi::e#0 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#0] -- register_copy + //SEG210 [112] phi (byte) line_xdyi::y#3 = (byte) line_xdyi::y#5 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#1] -- register_copy + //SEG211 [112] phi (byte) line_xdyi::x#3 = (byte) line_xdyi::x#6 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#2] -- register_copy jmp b1 - //SEG217 line_xdyi::@1 + //SEG212 line_xdyi::@1 b1: - //SEG218 [118] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuz1=vbuz2 + //SEG213 [113] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuz1=vbuz2 lda x sta plot.x - //SEG219 [119] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuz1=vbuz2 + //SEG214 [114] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuz1=vbuz2 lda y sta plot.y - //SEG220 [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - //SEG221 [102] phi from line_xdyi::@1 to plot [phi:line_xdyi::@1->plot] + //SEG215 [115] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + //SEG216 [102] phi from line_xdyi::@1 to plot [phi:line_xdyi::@1->plot] plot_from_b1: - //SEG222 [102] phi (byte) plot::y#4 = (byte) plot::y#0 [phi:line_xdyi::@1->plot#0] -- register_copy - //SEG223 [102] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy + //SEG217 [102] phi (byte) plot::y#4 = (byte) plot::y#0 [phi:line_xdyi::@1->plot#0] -- register_copy + //SEG218 [102] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy jsr plot jmp b5 - //SEG224 line_xdyi::@5 + //SEG219 line_xdyi::@5 b5: - //SEG225 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuz1=vbuz1_plus_1 inc x - //SEG226 [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG227 [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG228 line_xdyi::@3 + //SEG223 line_xdyi::@3 b3: - //SEG229 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG224 [119] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) -- vbuz1=vbuz1_plus_1 inc y - //SEG230 [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG225 [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG231 [126] phi from line_xdyi::@3 line_xdyi::@5 to line_xdyi::@2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2] + //SEG226 [121] phi from line_xdyi::@3 line_xdyi::@5 to line_xdyi::@2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2] b2_from_b3: b2_from_b5: - //SEG232 [126] phi (byte) line_xdyi::e#6 = (byte) line_xdyi::e#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#0] -- register_copy - //SEG233 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy + //SEG227 [121] phi (byte) line_xdyi::e#6 = (byte) line_xdyi::e#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#0] -- register_copy + //SEG228 [121] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy jmp b2 - //SEG234 line_xdyi::@2 + //SEG229 line_xdyi::@2 b2: - //SEG235 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG230 [122] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) -- vbuz1=vbuz2_plus_1 lda x1 clc adc #1 sta _8 - //SEG236 [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) -- vbuz1_lt_vbuz2_then_la1 + //SEG231 [123] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) -- vbuz1_lt_vbuz2_then_la1 lda x cmp _8 bcc b1_from_b2 jmp breturn - //SEG237 line_xdyi::@return + //SEG232 line_xdyi::@return breturn: - //SEG238 [129] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) + //SEG233 [124] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) rts } -//SEG239 line_ydxd +//SEG234 line_ydxd line_ydxd: { - .label _8 = $40 + .label _8 = $3b .label y = $15 .label x = $14 .label y1 = $13 .label yd = $12 .label xd = $11 .label e = $16 - //SEG240 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG235 [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG241 [132] phi from line_ydxd line_ydxd::@2 to line_ydxd::@1 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1] + //SEG236 [127] phi from line_ydxd line_ydxd::@2 to line_ydxd::@1 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1] b1_from_line_ydxd: b1_from_b2: - //SEG242 [132] phi (byte) line_ydxd::e#3 = (byte) line_ydxd::e#0 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#0] -- register_copy - //SEG243 [132] phi (byte) line_ydxd::y#3 = (byte) line_ydxd::y#6 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#1] -- register_copy - //SEG244 [132] phi (byte) line_ydxd::x#3 = (byte) line_ydxd::x#5 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#2] -- register_copy + //SEG237 [127] phi (byte) line_ydxd::e#3 = (byte) line_ydxd::e#0 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#0] -- register_copy + //SEG238 [127] phi (byte) line_ydxd::y#3 = (byte) line_ydxd::y#6 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#1] -- register_copy + //SEG239 [127] phi (byte) line_ydxd::x#3 = (byte) line_ydxd::x#5 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#2] -- register_copy jmp b1 - //SEG245 line_ydxd::@1 + //SEG240 line_ydxd::@1 b1: - //SEG246 [133] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuz1=vbuz2 + //SEG241 [128] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuz1=vbuz2 lda x sta plot.x - //SEG247 [134] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuz1=vbuz2 + //SEG242 [129] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuz1=vbuz2 lda y sta plot.y - //SEG248 [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - //SEG249 [102] phi from line_ydxd::@1 to plot [phi:line_ydxd::@1->plot] + //SEG243 [130] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + //SEG244 [102] phi from line_ydxd::@1 to plot [phi:line_ydxd::@1->plot] plot_from_b1: - //SEG250 [102] phi (byte) plot::y#4 = (byte) plot::y#3 [phi:line_ydxd::@1->plot#0] -- register_copy - //SEG251 [102] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy + //SEG245 [102] phi (byte) plot::y#4 = (byte) plot::y#3 [phi:line_ydxd::@1->plot#0] -- register_copy + //SEG246 [102] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy jsr plot jmp b5 - //SEG252 line_ydxd::@5 + //SEG247 line_ydxd::@5 b5: - //SEG253 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1 inc y - //SEG254 [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG255 [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2_from_b5 jmp b3 - //SEG256 line_ydxd::@3 + //SEG251 line_ydxd::@3 b3: - //SEG257 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) -- vbuz1=vbuz1_minus_1 + //SEG252 [134] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) -- vbuz1=vbuz1_minus_1 dec x - //SEG258 [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG253 [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG259 [141] phi from line_ydxd::@3 line_ydxd::@5 to line_ydxd::@2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2] + //SEG254 [136] phi from line_ydxd::@3 line_ydxd::@5 to line_ydxd::@2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2] b2_from_b3: b2_from_b5: - //SEG260 [141] phi (byte) line_ydxd::e#6 = (byte) line_ydxd::e#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#0] -- register_copy - //SEG261 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy + //SEG255 [136] phi (byte) line_ydxd::e#6 = (byte) line_ydxd::e#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#0] -- register_copy + //SEG256 [136] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy jmp b2 - //SEG262 line_ydxd::@2 + //SEG257 line_ydxd::@2 b2: - //SEG263 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG258 [137] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) -- vbuz1=vbuz2_plus_1 lda y1 clc adc #1 sta _8 - //SEG264 [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) -- vbuz1_lt_vbuz2_then_la1 + //SEG259 [138] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) -- vbuz1_lt_vbuz2_then_la1 lda y cmp _8 bcc b1_from_b2 jmp breturn - //SEG265 line_ydxd::@return + //SEG260 line_ydxd::@return breturn: - //SEG266 [144] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) + //SEG261 [139] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) rts } -//SEG267 line_xdyd +//SEG262 line_xdyd line_xdyd: { - .label _8 = $41 + .label _8 = $3c .label x = $1a .label y = $1b .label x1 = $19 .label xd = $18 .label yd = $17 .label e = $1c - //SEG268 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG263 [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG269 [147] phi from line_xdyd line_xdyd::@2 to line_xdyd::@1 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1] + //SEG264 [142] phi from line_xdyd line_xdyd::@2 to line_xdyd::@1 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1] b1_from_line_xdyd: b1_from_b2: - //SEG270 [147] phi (byte) line_xdyd::e#3 = (byte) line_xdyd::e#0 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#0] -- register_copy - //SEG271 [147] phi (byte) line_xdyd::y#3 = (byte) line_xdyd::y#5 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#1] -- register_copy - //SEG272 [147] phi (byte) line_xdyd::x#3 = (byte) line_xdyd::x#6 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#2] -- register_copy + //SEG265 [142] phi (byte) line_xdyd::e#3 = (byte) line_xdyd::e#0 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#0] -- register_copy + //SEG266 [142] phi (byte) line_xdyd::y#3 = (byte) line_xdyd::y#5 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#1] -- register_copy + //SEG267 [142] phi (byte) line_xdyd::x#3 = (byte) line_xdyd::x#6 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#2] -- register_copy jmp b1 - //SEG273 line_xdyd::@1 + //SEG268 line_xdyd::@1 b1: - //SEG274 [148] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuz1=vbuz2 + //SEG269 [143] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuz1=vbuz2 lda x sta plot.x - //SEG275 [149] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuz1=vbuz2 + //SEG270 [144] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuz1=vbuz2 lda y sta plot.y - //SEG276 [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - //SEG277 [102] phi from line_xdyd::@1 to plot [phi:line_xdyd::@1->plot] + //SEG271 [145] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG272 [102] phi from line_xdyd::@1 to plot [phi:line_xdyd::@1->plot] plot_from_b1: - //SEG278 [102] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:line_xdyd::@1->plot#0] -- register_copy - //SEG279 [102] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy + //SEG273 [102] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:line_xdyd::@1->plot#0] -- register_copy + //SEG274 [102] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy jsr plot jmp b5 - //SEG280 line_xdyd::@5 + //SEG275 line_xdyd::@5 b5: - //SEG281 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuz1=vbuz1_plus_1 inc x - //SEG282 [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG283 [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG284 line_xdyd::@3 + //SEG279 line_xdyd::@3 b3: - //SEG285 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) -- vbuz1=vbuz1_minus_1 + //SEG280 [149] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) -- vbuz1=vbuz1_minus_1 dec y - //SEG286 [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG281 [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG287 [156] phi from line_xdyd::@3 line_xdyd::@5 to line_xdyd::@2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2] + //SEG282 [151] phi from line_xdyd::@3 line_xdyd::@5 to line_xdyd::@2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2] b2_from_b3: b2_from_b5: - //SEG288 [156] phi (byte) line_xdyd::e#6 = (byte) line_xdyd::e#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#0] -- register_copy - //SEG289 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy + //SEG283 [151] phi (byte) line_xdyd::e#6 = (byte) line_xdyd::e#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#0] -- register_copy + //SEG284 [151] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy jmp b2 - //SEG290 line_xdyd::@2 + //SEG285 line_xdyd::@2 b2: - //SEG291 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG286 [152] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) -- vbuz1=vbuz2_plus_1 lda x1 clc adc #1 sta _8 - //SEG292 [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) -- vbuz1_lt_vbuz2_then_la1 + //SEG287 [153] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) -- vbuz1_lt_vbuz2_then_la1 lda x cmp _8 bcc b1_from_b2 jmp breturn - //SEG293 line_xdyd::@return + //SEG288 line_xdyd::@return breturn: - //SEG294 [159] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) + //SEG289 [154] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) rts } -//SEG295 init_plot_tables +//SEG290 init_plot_tables init_plot_tables: { - .label _0 = $42 - .label _6 = $43 - .label _7 = $44 - .label _8 = $45 - .label _9 = $46 - .label _10 = $47 + .label _0 = $3d + .label _6 = $3e + .label _7 = $3f + .label _8 = $40 + .label _9 = $41 + .label _10 = $42 .label bits = $1e .label x = $1d .label y = $1f .label yoffs = $20 - //SEG296 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG291 [156] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG297 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 + //SEG292 [156] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 lda #$80 sta bits - //SEG298 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 + //SEG293 [156] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG299 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG294 [156] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG300 [161] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG301 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG295 [156] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG296 [156] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG302 init_plot_tables::@1 + //SEG297 init_plot_tables::@1 b1: - //SEG303 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG298 [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuz1=vbuz2_band_vbuc1 lda x and #$f8 sta _0 - //SEG304 [163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG299 [158] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldx x sta plot_xlo,x - //SEG305 [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG300 [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 lda #>BITMAP ldx x sta plot_xhi,x - //SEG306 [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG301 [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldx x sta plot_bit,x - //SEG307 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1=vbuz1_ror_1 + //SEG302 [161] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1=vbuz1_ror_1 lsr bits - //SEG308 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG303 [162] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1_neq_0_then_la1 lda bits bne b10_from_b1 - //SEG309 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG304 [163] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG310 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 + //SEG305 [163] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG311 init_plot_tables::@2 + //SEG306 init_plot_tables::@2 b2: - //SEG312 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1=_inc_vbuz1 + //SEG307 [164] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG313 [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1_neq_0_then_la1 + //SEG308 [165] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1_neq_0_then_la1 lda x bne b1_from_b2 - //SEG314 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG309 [166] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG315 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG310 [166] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG316 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 + //SEG311 [166] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG317 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG312 [166] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG318 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG319 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG313 [166] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG314 [166] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy jmp b3 - //SEG320 init_plot_tables::@3 + //SEG315 init_plot_tables::@3 b3: - //SEG321 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG316 [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuz2_band_vbuc1 lda y and #7 sta _6 - //SEG322 [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuz1=_lo_pbuz2 + //SEG317 [168] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG323 [174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuz1=vbuz2_bor_vbuz3 + //SEG318 [169] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG324 [175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG319 [170] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldx y sta plot_ylo,x - //SEG325 [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuz1=_hi_pbuz2 + //SEG320 [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG326 [177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG321 [172] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _9 ldx y sta plot_yhi,x - //SEG327 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG322 [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuz1=vbuz2_band_vbuc1 lda y and #7 sta _10 - //SEG328 [179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG323 [174] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuz1_neq_vbuc1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 - //SEG329 init_plot_tables::@7 + //SEG324 init_plot_tables::@7 b7: - //SEG330 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + //SEG325 [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 lda yoffs clc adc #<$28*8 @@ -15274,91 +15015,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG331 [181] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG326 [176] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG332 [181] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG327 [176] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG333 init_plot_tables::@4 + //SEG328 init_plot_tables::@4 b4: - //SEG334 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1=_inc_vbuz1 + //SEG329 [177] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG335 [183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1_neq_0_then_la1 + //SEG330 [178] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1_neq_0_then_la1 lda y bne b3_from_b4 jmp breturn - //SEG336 init_plot_tables::@return + //SEG331 init_plot_tables::@return breturn: - //SEG337 [184] return [ ] ( main:2::init_plot_tables:10 [ ] ) + //SEG332 [179] return [ ] ( main:2::init_plot_tables:10 [ ] ) rts - //SEG338 [185] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG333 [180] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG339 init_plot_tables::@10 + //SEG334 init_plot_tables::@10 b10: - //SEG340 [168] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG335 [163] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG341 [168] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG336 [163] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG342 init_screen +//SEG337 init_screen init_screen: { .label b = $22 .label c = $24 - //SEG343 [187] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG338 [182] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG344 [187] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG339 [182] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG345 [187] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG340 [182] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG346 [187] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG341 [182] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG347 init_screen::@1 + //SEG342 init_screen::@1 b1: - //SEG348 [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #0 sta (b),y - //SEG349 [189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG350 [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG345 [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG346 [186] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG352 [191] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG347 [186] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG353 [191] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG348 [186] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG354 [191] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG349 [186] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG355 init_screen::@2 + //SEG350 init_screen::@2 b2: - //SEG356 [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #$14 sta (c),y - //SEG357 [193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG358 [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG353 [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -15366,17 +15107,14 @@ init_screen: { cmp #> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) always clobbers reg byte a -Statement [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) always clobbers reg byte y +Statement [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) always clobbers reg byte a +Statement [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) always clobbers reg byte a +Statement [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) always clobbers reg byte a +Statement [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) always clobbers reg byte a +Statement [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) always clobbers reg byte a +Statement [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) always clobbers reg byte a +Statement [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) always clobbers reg byte a +Statement [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) always clobbers reg byte a +Statement [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) always clobbers reg byte a +Statement [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:29 [ init_plot_tables::x#2 init_plot_tables::x#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] -Statement [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:31 [ init_plot_tables::y#2 init_plot_tables::y#1 ] -Statement [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a +Statement [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -15485,30 +15226,32 @@ Statement [73] (byte) line::yd#10 ← (byte) line::y0#0 - (byte) line::y1#0 [ li Statement [88] (byte) line_ydxi::e#0 ← (byte) line_ydxi::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::x#5 line_ydxi::y#6 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::e#0 ] ) always clobbers reg byte a Statement [94] (byte) line_ydxi::e#1 ← (byte) line_ydxi::e#3 + (byte) line_ydxi::xd#2 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#2 line_ydxi::e#1 ] ) always clobbers reg byte a Statement [97] (byte) line_ydxi::e#2 ← (byte) line_ydxi::e#1 - (byte) line_ydxi::yd#5 [ line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ( main:2::lines:12::line:21::line_ydxi:42 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] main:2::lines:12::line:21::line_ydxi:86 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::y#2 line_ydxi::x#2 line_ydxi::e#2 ] ) always clobbers reg byte a -Statement [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] ) always clobbers reg byte a -Statement [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) always clobbers reg byte a -Statement [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] ) always clobbers reg byte a reg byte y -Statement [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) always clobbers reg byte y -Statement [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) always clobbers reg byte a -Statement [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) always clobbers reg byte a -Statement [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) always clobbers reg byte a -Statement [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) always clobbers reg byte a -Statement [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) always clobbers reg byte a -Statement [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) always clobbers reg byte a -Statement [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) always clobbers reg byte a -Statement [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) always clobbers reg byte a -Statement [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) always clobbers reg byte a -Statement [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a -Statement [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a -Statement [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) always clobbers reg byte a +Statement [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) always clobbers reg byte a +Statement [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] ) always clobbers reg byte a +Statement [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) always clobbers reg byte a +Statement [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] ) always clobbers reg byte a reg byte y +Statement [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) always clobbers reg byte y +Statement [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) always clobbers reg byte a +Statement [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) always clobbers reg byte a +Statement [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) always clobbers reg byte a +Statement [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) always clobbers reg byte a +Statement [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) always clobbers reg byte a +Statement [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) always clobbers reg byte a +Statement [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) always clobbers reg byte a +Statement [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) always clobbers reg byte a +Statement [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) always clobbers reg byte a +Statement [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a +Statement [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] : zp ZP_BYTE:4 , reg byte x , @@ -15517,7 +15260,7 @@ Potential registers zp ZP_BYTE:6 [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 Potential registers zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] : zp ZP_BYTE:7 , reg byte x , Potential registers zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] : zp ZP_BYTE:8 , reg byte x , Potential registers zp ZP_BYTE:9 [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] : zp ZP_BYTE:11 , reg byte x , Potential registers zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] : zp ZP_BYTE:12 , reg byte x , Potential registers zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] : zp ZP_BYTE:13 , reg byte x , @@ -15553,127 +15296,118 @@ Potential registers zp ZP_BYTE:45 [ line::xd#0 ] : zp ZP_BYTE:45 , reg byte x , Potential registers zp ZP_BYTE:46 [ line::yd#3 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:47 [ line::yd#10 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:48 [ line_ydxi::$8 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:49 [ plot::$0 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ plot::$1 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_WORD:51 [ plot::plotter_x#0 ] : zp ZP_WORD:51 , -Potential registers zp ZP_BYTE:53 [ plot::$2 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ plot::$3 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_WORD:55 [ plot::plotter_y#0 ] : zp ZP_WORD:55 , -Potential registers zp ZP_WORD:57 [ plot::$4 ] : zp ZP_WORD:57 , -Potential registers zp ZP_WORD:59 [ plot::plotter#0 ] : zp ZP_WORD:59 , -Potential registers zp ZP_BYTE:61 [ plot::$5 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:62 [ plot::$6 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:63 [ line_xdyi::$8 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:64 [ line_ydxd::$8 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:65 [ line_xdyd::$8 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:66 [ init_plot_tables::$0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:67 [ init_plot_tables::$6 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ init_plot_tables::$7 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:69 [ init_plot_tables::$8 ] : zp ZP_BYTE:69 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:70 [ init_plot_tables::$9 ] : zp ZP_BYTE:70 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:71 [ init_plot_tables::$10 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:49 [ plot::plotter_x#0 ] : zp ZP_WORD:49 , +Potential registers zp ZP_WORD:51 [ plot::plotter_y#0 ] : zp ZP_WORD:51 , +Potential registers zp ZP_WORD:53 [ plot::$0 ] : zp ZP_WORD:53 , +Potential registers zp ZP_WORD:55 [ plot::plotter#0 ] : zp ZP_WORD:55 , +Potential registers zp ZP_BYTE:57 [ plot::$1 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:58 [ line_xdyi::$8 ] : zp ZP_BYTE:58 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:59 [ line_ydxd::$8 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:60 [ line_xdyd::$8 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:61 [ init_plot_tables::$0 ] : zp ZP_BYTE:61 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:62 [ init_plot_tables::$6 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:63 [ init_plot_tables::$7 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:64 [ init_plot_tables::$8 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ init_plot_tables::$9 ] : zp ZP_BYTE:65 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:66 [ init_plot_tables::$10 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [lines] 252.5: zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] -Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:30 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:29 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:31 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:66 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:68 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:69 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:70 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:71 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:67 [ init_plot_tables::$6 ] -Uplift Scope [plot] 97.6: zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] 49.56: zp ZP_BYTE:9 [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] 4: zp ZP_BYTE:50 [ plot::$1 ] 4: zp ZP_BYTE:54 [ plot::$3 ] 4: zp ZP_WORD:55 [ plot::plotter_y#0 ] 4: zp ZP_WORD:57 [ plot::$4 ] 4: zp ZP_BYTE:61 [ plot::$5 ] 4: zp ZP_BYTE:62 [ plot::$6 ] 2: zp ZP_BYTE:49 [ plot::$0 ] 2: zp ZP_BYTE:53 [ plot::$2 ] 2: zp ZP_WORD:59 [ plot::plotter#0 ] 1: zp ZP_WORD:51 [ plot::plotter_x#0 ] -Uplift Scope [line_xdyi] 56.47: zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] 33.57: zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] 22: zp ZP_BYTE:63 [ line_xdyi::$8 ] 17.48: zp ZP_BYTE:14 [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] 9.21: zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] 5.86: zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] 3.74: zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] -Uplift Scope [line_xdyd] 56.47: zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] 33.57: zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] 22: zp ZP_BYTE:65 [ line_xdyd::$8 ] 17.48: zp ZP_BYTE:26 [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] 9.21: zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] 5.86: zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] 3.74: zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] +Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:30 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:29 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:31 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:61 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:63 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:64 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:65 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:66 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:62 [ init_plot_tables::$6 ] +Uplift Scope [plot] 112: zp ZP_BYTE:10 [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] 54: zp ZP_BYTE:9 [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] 4: zp ZP_WORD:51 [ plot::plotter_y#0 ] 4: zp ZP_WORD:53 [ plot::$0 ] 4: zp ZP_BYTE:57 [ plot::$1 ] 3: zp ZP_WORD:55 [ plot::plotter#0 ] 2: zp ZP_WORD:49 [ plot::plotter_x#0 ] +Uplift Scope [line_xdyi] 56.47: zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] 33.57: zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] 22: zp ZP_BYTE:58 [ line_xdyi::$8 ] 17.48: zp ZP_BYTE:14 [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] 9.21: zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] 5.86: zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] 3.74: zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] +Uplift Scope [line_xdyd] 56.47: zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] 33.57: zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] 22: zp ZP_BYTE:60 [ line_xdyd::$8 ] 17.48: zp ZP_BYTE:26 [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] 9.21: zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] 5.86: zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] 3.74: zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] Uplift Scope [line_ydxi] 56.47: zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] 33.57: zp ZP_BYTE:6 [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ] 22: zp ZP_BYTE:48 [ line_ydxi::$8 ] 17.48: zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] 9.21: zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] 5.86: zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] 3.74: zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] -Uplift Scope [line_ydxd] 56.47: zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] 33.57: zp ZP_BYTE:20 [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] 22: zp ZP_BYTE:64 [ line_ydxd::$8 ] 17.48: zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] 9.21: zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] 5.86: zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] 3.74: zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] +Uplift Scope [line_ydxd] 56.47: zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] 33.57: zp ZP_BYTE:20 [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] 22: zp ZP_BYTE:59 [ line_ydxd::$8 ] 17.48: zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] 9.21: zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] 5.86: zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] 3.74: zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] Uplift Scope [init_screen] 33: zp ZP_WORD:34 [ init_screen::b#2 init_screen::b#1 ] 33: zp ZP_WORD:36 [ init_screen::c#2 init_screen::c#1 ] Uplift Scope [line] 6.25: zp ZP_BYTE:41 [ line::y1#0 ] 5.95: zp ZP_BYTE:40 [ line::y0#0 ] 5.41: zp ZP_BYTE:39 [ line::x1#0 ] 5.17: zp ZP_BYTE:38 [ line::x0#0 ] 0.89: zp ZP_BYTE:43 [ line::yd#1 ] 0.89: zp ZP_BYTE:44 [ line::yd#0 ] 0.89: zp ZP_BYTE:46 [ line::yd#3 ] 0.89: zp ZP_BYTE:47 [ line::yd#10 ] 0.7: zp ZP_BYTE:42 [ line::xd#1 ] 0.7: zp ZP_BYTE:45 [ line::xd#0 ] Uplift Scope [main] Uplift Scope [] -Uplifting [lines] best 15303 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] +Uplifting [lines] best 15270 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] Uplift attempts [init_plot_tables] 10000/138240 (limiting to 10000) -Uplifting [init_plot_tables] best 14673 combination zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:71 [ init_plot_tables::$10 ] zp ZP_BYTE:67 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 14640 combination zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:66 [ init_plot_tables::$10 ] zp ZP_BYTE:62 [ init_plot_tables::$6 ] Limited combination testing to 10000 combinations of 138240 possible. -Uplift attempts [plot] 10000/96000 (limiting to 10000) -Uplifting [plot] best 14388 combination reg byte y [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] reg byte x [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] reg byte alu [ plot::$1 ] reg byte a [ plot::$3 ] zp ZP_WORD:55 [ plot::plotter_y#0 ] zp ZP_WORD:57 [ plot::$4 ] reg byte a [ plot::$5 ] reg byte a [ plot::$6 ] reg byte a [ plot::$0 ] zp ZP_BYTE:53 [ plot::$2 ] zp ZP_WORD:59 [ plot::plotter#0 ] zp ZP_WORD:51 [ plot::plotter_x#0 ] -Limited combination testing to 10000 combinations of 96000 possible. -Uplifting [line_xdyi] best 14292 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] zp ZP_BYTE:63 [ line_xdyi::$8 ] reg byte x [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] -Uplifting [line_xdyd] best 14196 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] zp ZP_BYTE:65 [ line_xdyd::$8 ] reg byte x [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] -Uplifting [line_ydxi] best 14070 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] reg byte x [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ] reg byte a [ line_ydxi::$8 ] zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] -Uplifting [line_ydxd] best 13944 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] reg byte a [ line_ydxd::$8 ] zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] -Uplifting [init_screen] best 13944 combination zp ZP_WORD:34 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:36 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [plot] best 14385 combination reg byte y [ plot::y#4 plot::y#1 plot::y#0 plot::y#3 plot::y#2 ] reg byte x [ plot::x#4 plot::x#1 plot::x#0 plot::x#3 plot::x#2 ] zp ZP_WORD:51 [ plot::plotter_y#0 ] zp ZP_WORD:53 [ plot::$0 ] reg byte a [ plot::$1 ] zp ZP_WORD:55 [ plot::plotter#0 ] zp ZP_WORD:49 [ plot::plotter_x#0 ] +Uplifting [line_xdyi] best 14289 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] zp ZP_BYTE:58 [ line_xdyi::$8 ] reg byte x [ line_xdyi::x#3 line_xdyi::x#6 line_xdyi::x#0 line_xdyi::x#1 line_xdyi::x#2 ] zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] +Uplifting [line_xdyd] best 14193 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] zp ZP_BYTE:60 [ line_xdyd::$8 ] reg byte x [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xdyd::x#2 ] zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] +Uplifting [line_ydxi] best 14067 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] reg byte x [ line_ydxi::x#3 line_ydxi::x#5 line_ydxi::x#1 line_ydxi::x#0 line_ydxi::x#6 line_ydxi::x#2 ] reg byte a [ line_ydxi::$8 ] zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] +Uplifting [line_ydxd] best 13941 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] reg byte x [ line_ydxd::x#3 line_ydxd::x#5 line_ydxd::x#1 line_ydxd::x#0 line_ydxd::x#6 line_ydxd::x#2 ] reg byte a [ line_ydxd::$8 ] zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] +Uplifting [init_screen] best 13941 combination zp ZP_WORD:34 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:36 [ init_screen::c#2 init_screen::c#1 ] Uplift attempts [line] 10000/186624 (limiting to 10000) -Uplifting [line] best 13828 combination zp ZP_BYTE:41 [ line::y1#0 ] reg byte y [ line::y0#0 ] zp ZP_BYTE:39 [ line::x1#0 ] zp ZP_BYTE:38 [ line::x0#0 ] zp ZP_BYTE:43 [ line::yd#1 ] zp ZP_BYTE:44 [ line::yd#0 ] zp ZP_BYTE:46 [ line::yd#3 ] zp ZP_BYTE:47 [ line::yd#10 ] zp ZP_BYTE:42 [ line::xd#1 ] zp ZP_BYTE:45 [ line::xd#0 ] +Uplifting [line] best 13825 combination zp ZP_BYTE:41 [ line::y1#0 ] reg byte y [ line::y0#0 ] zp ZP_BYTE:39 [ line::x1#0 ] zp ZP_BYTE:38 [ line::x0#0 ] zp ZP_BYTE:43 [ line::yd#1 ] zp ZP_BYTE:44 [ line::yd#0 ] zp ZP_BYTE:46 [ line::yd#3 ] zp ZP_BYTE:47 [ line::yd#10 ] zp ZP_BYTE:42 [ line::xd#1 ] zp ZP_BYTE:45 [ line::xd#0 ] Limited combination testing to 10000 combinations of 186624 possible. -Uplifting [main] best 13828 combination -Uplifting [] best 13828 combination +Uplifting [main] best 13825 combination +Uplifting [] best 13825 combination Attempting to uplift remaining variables inzp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] -Uplifting [lines] best 13828 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] +Uplifting [lines] best 13825 combination zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] -Uplifting [line_ydxi] best 13828 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] +Uplifting [line_ydxi] best 13825 combination zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] -Uplifting [line_xdyi] best 13828 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] +Uplifting [line_xdyi] best 13825 combination zp ZP_BYTE:16 [ line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] -Uplifting [line_ydxd] best 13828 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] +Uplifting [line_ydxd] best 13825 combination zp ZP_BYTE:22 [ line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] -Uplifting [line_xdyd] best 13828 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] +Uplifting [line_xdyd] best 13825 combination zp ZP_BYTE:28 [ line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] -Uplifting [line_xdyi] best 13828 combination zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] +Uplifting [line_xdyi] best 13825 combination zp ZP_BYTE:15 [ line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] -Uplifting [line_xdyd] best 13828 combination zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:63 [ line_xdyi::$8 ] -Uplifting [line_xdyi] best 13828 combination zp ZP_BYTE:63 [ line_xdyi::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:65 [ line_xdyd::$8 ] -Uplifting [line_xdyd] best 13828 combination zp ZP_BYTE:65 [ line_xdyd::$8 ] -Attempting to uplift remaining variables inzp ZP_BYTE:71 [ init_plot_tables::$10 ] -Uplifting [init_plot_tables] best 13768 combination reg byte a [ init_plot_tables::$10 ] +Uplifting [line_xdyd] best 13825 combination zp ZP_BYTE:27 [ line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:58 [ line_xdyi::$8 ] +Uplifting [line_xdyi] best 13825 combination zp ZP_BYTE:58 [ line_xdyi::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:60 [ line_xdyd::$8 ] +Uplifting [line_xdyd] best 13825 combination zp ZP_BYTE:60 [ line_xdyd::$8 ] +Attempting to uplift remaining variables inzp ZP_BYTE:66 [ init_plot_tables::$10 ] +Uplifting [init_plot_tables] best 13765 combination reg byte a [ init_plot_tables::$10 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] -Uplifting [line_ydxi] best 13768 combination zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] +Uplifting [line_ydxi] best 13765 combination zp ZP_BYTE:7 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] -Uplifting [line_ydxd] best 13768 combination zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:67 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 13768 combination zp ZP_BYTE:67 [ init_plot_tables::$6 ] +Uplifting [line_ydxd] best 13765 combination zp ZP_BYTE:21 [ line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:62 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 13765 combination zp ZP_BYTE:62 [ init_plot_tables::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] -Uplifting [line_ydxi] best 13768 combination zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] +Uplifting [line_ydxi] best 13765 combination zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] -Uplifting [line_xdyi] best 13768 combination zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] +Uplifting [line_xdyi] best 13765 combination zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] -Uplifting [line_ydxd] best 13768 combination zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] +Uplifting [line_ydxd] best 13765 combination zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] -Uplifting [line_xdyd] best 13768 combination zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] +Uplifting [line_xdyd] best 13765 combination zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:41 [ line::y1#0 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:41 [ line::y1#0 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:41 [ line::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] -Uplifting [line_ydxi] best 13768 combination zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] +Uplifting [line_ydxi] best 13765 combination zp ZP_BYTE:4 [ line_ydxi::yd#5 line_ydxi::yd#1 line_ydxi::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] -Uplifting [line_xdyi] best 13768 combination zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] +Uplifting [line_xdyi] best 13765 combination zp ZP_BYTE:12 [ line_xdyi::xd#5 line_xdyi::xd#0 line_xdyi::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] -Uplifting [line_ydxd] best 13768 combination zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] +Uplifting [line_ydxd] best 13765 combination zp ZP_BYTE:18 [ line_ydxd::yd#5 line_ydxd::yd#1 line_ydxd::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] -Uplifting [line_xdyd] best 13768 combination zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] +Uplifting [line_xdyd] best 13765 combination zp ZP_BYTE:24 [ line_xdyd::xd#5 line_xdyd::xd#0 line_xdyd::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:39 [ line::x1#0 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:39 [ line::x1#0 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:39 [ line::x1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:38 [ line::x0#0 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:38 [ line::x0#0 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:38 [ line::x0#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] -Uplifting [line_ydxi] best 13768 combination zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] +Uplifting [line_ydxi] best 13765 combination zp ZP_BYTE:5 [ line_ydxi::y1#6 line_ydxi::y1#1 line_ydxi::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] -Uplifting [line_xdyi] best 13768 combination zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] +Uplifting [line_xdyi] best 13765 combination zp ZP_BYTE:13 [ line_xdyi::x1#6 line_xdyi::x1#0 line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] -Uplifting [line_ydxd] best 13768 combination zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] +Uplifting [line_ydxd] best 13765 combination zp ZP_BYTE:19 [ line_ydxd::y1#6 line_ydxd::y1#1 line_ydxd::y1#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] -Uplifting [line_xdyd] best 13768 combination zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:53 [ plot::$2 ] -Uplifting [plot] best 13768 combination zp ZP_BYTE:53 [ plot::$2 ] +Uplifting [line_xdyd] best 13765 combination zp ZP_BYTE:25 [ line_xdyd::x1#6 line_xdyd::x1#0 line_xdyd::x1#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:43 [ line::yd#1 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:43 [ line::yd#1 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:43 [ line::yd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:44 [ line::yd#0 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:44 [ line::yd#0 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:44 [ line::yd#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:46 [ line::yd#3 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:46 [ line::yd#3 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:46 [ line::yd#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:47 [ line::yd#10 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:47 [ line::yd#10 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:47 [ line::yd#10 ] Attempting to uplift remaining variables inzp ZP_BYTE:42 [ line::xd#1 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:42 [ line::xd#1 ] +Uplifting [line] best 13765 combination zp ZP_BYTE:42 [ line::xd#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ line::xd#0 ] -Uplifting [line] best 13768 combination zp ZP_BYTE:45 [ line::xd#0 ] -Coalescing zero page register [ zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] ] with [ zp ZP_BYTE:67 [ init_plot_tables::$6 ] ] +Uplifting [line] best 13765 combination zp ZP_BYTE:45 [ line::xd#0 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ lines::l#2 lines::l#1 ] ] with [ zp ZP_BYTE:62 [ init_plot_tables::$6 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 ] ] with [ zp ZP_BYTE:11 [ line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 ] ] with [ zp ZP_BYTE:17 [ line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] ] Coalescing zero page register [ zp ZP_BYTE:3 [ line_ydxi::xd#2 line_ydxi::xd#1 line_ydxi::xd#0 line_xdyi::yd#2 line_xdyi::yd#0 line_xdyi::yd#1 line_ydxd::xd#2 line_ydxd::xd#1 line_ydxd::xd#0 ] ] with [ zp ZP_BYTE:23 [ line_xdyd::yd#2 line_xdyd::yd#0 line_xdyd::yd#1 ] ] @@ -15696,20 +15430,19 @@ Coalescing zero page register [ zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 lin Coalescing zero page register [ zp ZP_BYTE:8 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 line::xd#1 ] ] with [ zp ZP_BYTE:45 [ line::xd#0 ] ] Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:34 [ init_screen::b#2 init_screen::b#1 ] ] Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:36 [ init_screen::c#2 init_screen::c#1 ] ] -Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:51 [ plot::plotter_x#0 ] ] -Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 ] ] with [ zp ZP_WORD:57 [ plot::$4 ] ] -Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$4 ] ] with [ zp ZP_WORD:59 [ plot::plotter#0 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:49 [ plot::plotter_x#0 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 ] ] with [ zp ZP_WORD:53 [ plot::$0 ] ] +Coalescing zero page register [ zp ZP_WORD:32 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 ] ] with [ zp ZP_WORD:55 [ plot::plotter#0 ] ] Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 ] ] with [ zp ZP_BYTE:44 [ line::yd#0 ] ] Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 ] ] with [ zp ZP_BYTE:46 [ line::yd#3 ] ] Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 line::yd#3 ] ] with [ zp ZP_BYTE:47 [ line::yd#10 ] ] -Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 ] ] with [ zp ZP_BYTE:53 [ plot::$2 ] ] -Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 plot::$2 ] ] with [ zp ZP_BYTE:63 [ line_xdyi::$8 ] ] -Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 plot::$2 line_xdyi::$8 ] ] with [ zp ZP_BYTE:65 [ line_xdyd::$8 ] ] +Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 ] ] with [ zp ZP_BYTE:58 [ line_xdyi::$8 ] ] +Coalescing zero page register [ zp ZP_BYTE:43 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 ] ] with [ zp ZP_BYTE:60 [ line_xdyd::$8 ] ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ line_ydxi::y#3 line_ydxi::y#6 line_ydxi::y#1 line_ydxi::y#0 line_ydxi::y#2 line_xdyi::y#3 line_xdyi::y#5 line_xdyi::y#0 line_xdyi::y#1 line_xdyi::y#6 line_xdyi::y#2 line_ydxd::y#3 line_ydxd::y#6 line_ydxd::y#1 line_ydxd::y#0 line_ydxd::y#2 line_xdyd::y#3 line_xdyd::y#5 line_xdyd::y#0 line_xdyd::y#1 line_xdyd::y#6 line_xdyd::y#2 ] Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ line_ydxi::e#3 line_ydxi::e#0 line_ydxi::e#6 line_ydxi::e#2 line_ydxi::e#1 line_xdyi::e#3 line_xdyi::e#0 line_xdyi::e#6 line_xdyi::e#2 line_xdyi::e#1 line_ydxd::e#3 line_ydxd::e#0 line_ydxd::e#6 line_ydxd::e#2 line_ydxd::e#1 line_xdyd::e#3 line_xdyd::e#0 line_xdyd::e#6 line_xdyd::e#2 line_xdyd::e#1 line::xd#1 line::xd#0 ] -Allocated (was zp ZP_WORD:32) zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$4 plot::plotter#0 ] -Allocated (was zp ZP_BYTE:43) zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 plot::$2 line_xdyi::$8 line_xdyd::$8 ] -Allocated (was zp ZP_WORD:55) zp ZP_WORD:11 [ plot::plotter_y#0 ] +Allocated (was zp ZP_WORD:32) zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 plot::plotter#0 ] +Allocated (was zp ZP_BYTE:43) zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 line_xdyd::$8 ] +Allocated (was zp ZP_WORD:51) zp ZP_WORD:11 [ plot::plotter_y#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -15763,7 +15496,7 @@ main: { lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400) sta D018 //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] ) - //SEG14 [186] phi from main to init_screen [phi:main->init_screen] + //SEG14 [181] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG15 [9] phi from main to main::@3 [phi:main->main::@3] @@ -15772,7 +15505,7 @@ main: { //SEG16 main::@3 b3: //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] ) - //SEG18 [160] phi from main::@3 to init_plot_tables [phi:main::@3->init_plot_tables] + //SEG18 [155] phi from main::@3 to init_plot_tables [phi:main::@3->init_plot_tables] init_plot_tables_from_b3: jsr init_plot_tables //SEG19 [11] phi from main::@3 main::@5 to main::@1 [phi:main::@3/main::@5->main::@1] @@ -15811,19 +15544,19 @@ lines: { jmp b1 //SEG32 lines::@1 b1: - //SEG33 [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG33 [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_x,x sta line.x0 - //SEG34 [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_x+1,x sta line.x1 - //SEG35 [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 ldx l lda lines_y,x tay - //SEG36 [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_y+1,x sta line.y1 @@ -15896,13 +15629,13 @@ line: { lda yd sta line_xdyi.yd //SEG57 [35] call line_xdyi param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG58 [115] phi from line::@17 to line_xdyi [phi:line::@17->line_xdyi] + //SEG58 [110] phi from line::@17 to line_xdyi [phi:line::@17->line_xdyi] line_xdyi_from_b17: - //SEG59 [115] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#0 [phi:line::@17->line_xdyi#0] -- register_copy - //SEG60 [115] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#0 [phi:line::@17->line_xdyi#1] -- register_copy - //SEG61 [115] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#0 [phi:line::@17->line_xdyi#2] -- register_copy - //SEG62 [115] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#0 [phi:line::@17->line_xdyi#3] -- register_copy - //SEG63 [115] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#0 [phi:line::@17->line_xdyi#4] -- register_copy + //SEG59 [110] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#0 [phi:line::@17->line_xdyi#0] -- register_copy + //SEG60 [110] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#0 [phi:line::@17->line_xdyi#1] -- register_copy + //SEG61 [110] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#0 [phi:line::@17->line_xdyi#2] -- register_copy + //SEG62 [110] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#0 [phi:line::@17->line_xdyi#3] -- register_copy + //SEG63 [110] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#0 [phi:line::@17->line_xdyi#4] -- register_copy jsr line_xdyi jmp breturn //SEG64 line::@return @@ -15961,13 +15694,13 @@ line: { lda yd sta line_xdyd.yd //SEG88 [50] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG89 [145] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] + //SEG89 [140] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] line_xdyd_from_b20: - //SEG90 [145] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy - //SEG91 [145] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#0 [phi:line::@20->line_xdyd#1] -- register_copy - //SEG92 [145] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#0 [phi:line::@20->line_xdyd#2] -- register_copy - //SEG93 [145] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#0 [phi:line::@20->line_xdyd#3] -- register_copy - //SEG94 [145] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#0 [phi:line::@20->line_xdyd#4] -- register_copy + //SEG90 [140] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy + //SEG91 [140] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#0 [phi:line::@20->line_xdyd#1] -- register_copy + //SEG92 [140] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#0 [phi:line::@20->line_xdyd#2] -- register_copy + //SEG93 [140] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#0 [phi:line::@20->line_xdyd#3] -- register_copy + //SEG94 [140] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#0 [phi:line::@20->line_xdyd#4] -- register_copy jsr line_xdyd jmp breturn //SEG95 line::@6 @@ -15986,13 +15719,13 @@ line: { lda xd sta line_ydxd.xd //SEG101 [56] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG102 [130] phi from line::@6 to line_ydxd [phi:line::@6->line_ydxd] + //SEG102 [125] phi from line::@6 to line_ydxd [phi:line::@6->line_ydxd] line_ydxd_from_b6: - //SEG103 [130] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#0 [phi:line::@6->line_ydxd#0] -- register_copy - //SEG104 [130] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#0 [phi:line::@6->line_ydxd#1] -- register_copy - //SEG105 [130] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#0 [phi:line::@6->line_ydxd#2] -- register_copy - //SEG106 [130] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#0 [phi:line::@6->line_ydxd#3] -- register_copy - //SEG107 [130] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#0 [phi:line::@6->line_ydxd#4] -- register_copy + //SEG103 [125] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#0 [phi:line::@6->line_ydxd#0] -- register_copy + //SEG104 [125] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#0 [phi:line::@6->line_ydxd#1] -- register_copy + //SEG105 [125] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#0 [phi:line::@6->line_ydxd#2] -- register_copy + //SEG106 [125] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#0 [phi:line::@6->line_ydxd#3] -- register_copy + //SEG107 [125] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#0 [phi:line::@6->line_ydxd#4] -- register_copy jsr line_ydxd jmp breturn //SEG108 line::@1 @@ -16036,13 +15769,13 @@ line: { lda yd sta line_xdyd.yd //SEG120 [66] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG121 [145] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] + //SEG121 [140] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] line_xdyd_from_b24: - //SEG122 [145] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy - //SEG123 [145] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#1 [phi:line::@24->line_xdyd#1] -- register_copy - //SEG124 [145] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#1 [phi:line::@24->line_xdyd#2] -- register_copy - //SEG125 [145] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#1 [phi:line::@24->line_xdyd#3] -- register_copy - //SEG126 [145] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#1 [phi:line::@24->line_xdyd#4] -- register_copy + //SEG122 [140] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy + //SEG123 [140] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#1 [phi:line::@24->line_xdyd#1] -- register_copy + //SEG124 [140] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#1 [phi:line::@24->line_xdyd#2] -- register_copy + //SEG125 [140] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#1 [phi:line::@24->line_xdyd#3] -- register_copy + //SEG126 [140] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#1 [phi:line::@24->line_xdyd#4] -- register_copy jsr line_xdyd jmp breturn //SEG127 line::@10 @@ -16060,13 +15793,13 @@ line: { lda xd sta line_ydxd.xd //SEG133 [72] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG134 [130] phi from line::@10 to line_ydxd [phi:line::@10->line_ydxd] + //SEG134 [125] phi from line::@10 to line_ydxd [phi:line::@10->line_ydxd] line_ydxd_from_b10: - //SEG135 [130] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#1 [phi:line::@10->line_ydxd#0] -- register_copy - //SEG136 [130] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#1 [phi:line::@10->line_ydxd#1] -- register_copy - //SEG137 [130] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#1 [phi:line::@10->line_ydxd#2] -- register_copy - //SEG138 [130] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#1 [phi:line::@10->line_ydxd#3] -- register_copy - //SEG139 [130] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#1 [phi:line::@10->line_ydxd#4] -- register_copy + //SEG135 [125] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#1 [phi:line::@10->line_ydxd#0] -- register_copy + //SEG136 [125] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#1 [phi:line::@10->line_ydxd#1] -- register_copy + //SEG137 [125] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#1 [phi:line::@10->line_ydxd#2] -- register_copy + //SEG138 [125] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#1 [phi:line::@10->line_ydxd#3] -- register_copy + //SEG139 [125] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#1 [phi:line::@10->line_ydxd#4] -- register_copy jsr line_ydxd jmp breturn //SEG140 line::@9 @@ -16098,13 +15831,13 @@ line: { lda yd sta line_xdyi.yd //SEG149 [80] call line_xdyi param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG150 [115] phi from line::@27 to line_xdyi [phi:line::@27->line_xdyi] + //SEG150 [110] phi from line::@27 to line_xdyi [phi:line::@27->line_xdyi] line_xdyi_from_b27: - //SEG151 [115] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#1 [phi:line::@27->line_xdyi#0] -- register_copy - //SEG152 [115] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#1 [phi:line::@27->line_xdyi#1] -- register_copy - //SEG153 [115] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#1 [phi:line::@27->line_xdyi#2] -- register_copy - //SEG154 [115] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#1 [phi:line::@27->line_xdyi#3] -- register_copy - //SEG155 [115] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#1 [phi:line::@27->line_xdyi#4] -- register_copy + //SEG151 [110] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#1 [phi:line::@27->line_xdyi#0] -- register_copy + //SEG152 [110] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#1 [phi:line::@27->line_xdyi#1] -- register_copy + //SEG153 [110] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#1 [phi:line::@27->line_xdyi#2] -- register_copy + //SEG154 [110] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#1 [phi:line::@27->line_xdyi#3] -- register_copy + //SEG155 [110] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#1 [phi:line::@27->line_xdyi#4] -- register_copy jsr line_xdyi jmp breturn //SEG156 line::@13 @@ -16210,52 +15943,43 @@ line_ydxi: { } //SEG197 plot plot: { - .label _2 = $a - .label _4 = 8 + .label _0 = 8 .label plotter_x = 8 .label plotter_y = $b .label plotter = 8 - //SEG198 [103] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG198 [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda plot_xhi,x - //SEG199 [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] ) - // [104] plot::$1 ← plot_xlo#0 *idx plot::x#4 // ALU - //SEG200 [105] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=vbuaa_word_pbuc1_derefidx_vbuxx sta plotter_x+1 lda plot_xlo,x sta plotter_x - //SEG201 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG199 [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda plot_yhi,y - sta _2 - //SEG202 [107] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuyy - lda plot_ylo,y - //SEG203 [108] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) -- vwuz1=vbuz2_word_vbuaa - sta plotter_y - lda _2 sta plotter_y+1 - //SEG204 [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] ) -- vwuz1=vwuz1_plus_vwuz2 - lda _4 + lda plot_ylo,y + sta plotter_y + //SEG200 [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda _0 clc adc plotter_y - sta _4 - lda _4+1 + sta _0 + lda _0+1 adc plotter_y+1 - sta _4+1 - //SEG205 [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) -- pbuz1=_ptrby_vwuz1 - //SEG206 [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] ) -- vbuaa=pbuc1_derefidx_vbuxx - lda plot_bit,x - //SEG207 [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuaa + sta _0+1 + //SEG201 [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) -- pbuz1=_ptrby_vwuz1 + //SEG202 [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] ) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx ldy #0 - ora (plotter),y - //SEG208 [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuaa + lda (plotter),y + ora plot_bit,x + //SEG203 [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp breturn - //SEG209 plot::@return + //SEG204 plot::@return breturn: - //SEG210 [114] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG205 [109] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) rts } -//SEG211 line_xdyi +//SEG206 line_xdyi line_xdyi: { .label _8 = $a .label y = 6 @@ -16263,151 +15987,151 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG212 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG207 [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG213 [117] phi from line_xdyi line_xdyi::@2 to line_xdyi::@1 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1] + //SEG208 [112] phi from line_xdyi line_xdyi::@2 to line_xdyi::@1 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1] b1_from_line_xdyi: b1_from_b2: - //SEG214 [117] phi (byte) line_xdyi::e#3 = (byte) line_xdyi::e#0 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#0] -- register_copy - //SEG215 [117] phi (byte) line_xdyi::y#3 = (byte) line_xdyi::y#5 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#1] -- register_copy - //SEG216 [117] phi (byte) line_xdyi::x#3 = (byte) line_xdyi::x#6 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#2] -- register_copy + //SEG209 [112] phi (byte) line_xdyi::e#3 = (byte) line_xdyi::e#0 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#0] -- register_copy + //SEG210 [112] phi (byte) line_xdyi::y#3 = (byte) line_xdyi::y#5 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#1] -- register_copy + //SEG211 [112] phi (byte) line_xdyi::x#3 = (byte) line_xdyi::x#6 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#2] -- register_copy jmp b1 - //SEG217 line_xdyi::@1 + //SEG212 line_xdyi::@1 b1: - //SEG218 [118] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + //SEG213 [113] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) // (byte) plot::x#0 = (byte) line_xdyi::x#3 // register copy reg byte x - //SEG219 [119] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuyy=vbuz1 + //SEG214 [114] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuyy=vbuz1 ldy y - //SEG220 [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - //SEG221 [102] phi from line_xdyi::@1 to plot [phi:line_xdyi::@1->plot] + //SEG215 [115] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + //SEG216 [102] phi from line_xdyi::@1 to plot [phi:line_xdyi::@1->plot] plot_from_b1: - //SEG222 [102] phi (byte) plot::y#4 = (byte) plot::y#0 [phi:line_xdyi::@1->plot#0] -- register_copy - //SEG223 [102] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy + //SEG217 [102] phi (byte) plot::y#4 = (byte) plot::y#0 [phi:line_xdyi::@1->plot#0] -- register_copy + //SEG218 [102] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy jsr plot jmp b5 - //SEG224 line_xdyi::@5 + //SEG219 line_xdyi::@5 b5: - //SEG225 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1 + //SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1 inx - //SEG226 [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG227 [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG228 line_xdyi::@3 + //SEG223 line_xdyi::@3 b3: - //SEG229 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG224 [119] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) -- vbuz1=vbuz1_plus_1 inc y - //SEG230 [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG225 [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG231 [126] phi from line_xdyi::@3 line_xdyi::@5 to line_xdyi::@2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2] + //SEG226 [121] phi from line_xdyi::@3 line_xdyi::@5 to line_xdyi::@2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2] b2_from_b3: b2_from_b5: - //SEG232 [126] phi (byte) line_xdyi::e#6 = (byte) line_xdyi::e#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#0] -- register_copy - //SEG233 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy + //SEG227 [121] phi (byte) line_xdyi::e#6 = (byte) line_xdyi::e#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#0] -- register_copy + //SEG228 [121] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy jmp b2 - //SEG234 line_xdyi::@2 + //SEG229 line_xdyi::@2 b2: - //SEG235 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG230 [122] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) -- vbuz1=vbuz2_plus_1 lda x1 clc adc #1 sta _8 - //SEG236 [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 + //SEG231 [123] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 cpx _8 bcc b1_from_b2 jmp breturn - //SEG237 line_xdyi::@return + //SEG232 line_xdyi::@return breturn: - //SEG238 [129] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) + //SEG233 [124] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) rts } -//SEG239 line_ydxd +//SEG234 line_ydxd line_ydxd: { .label y = 6 .label y1 = 5 .label yd = 4 .label xd = 3 .label e = 7 - //SEG240 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG235 [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG241 [132] phi from line_ydxd line_ydxd::@2 to line_ydxd::@1 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1] + //SEG236 [127] phi from line_ydxd line_ydxd::@2 to line_ydxd::@1 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1] b1_from_line_ydxd: b1_from_b2: - //SEG242 [132] phi (byte) line_ydxd::e#3 = (byte) line_ydxd::e#0 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#0] -- register_copy - //SEG243 [132] phi (byte) line_ydxd::y#3 = (byte) line_ydxd::y#6 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#1] -- register_copy - //SEG244 [132] phi (byte) line_ydxd::x#3 = (byte) line_ydxd::x#5 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#2] -- register_copy + //SEG237 [127] phi (byte) line_ydxd::e#3 = (byte) line_ydxd::e#0 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#0] -- register_copy + //SEG238 [127] phi (byte) line_ydxd::y#3 = (byte) line_ydxd::y#6 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#1] -- register_copy + //SEG239 [127] phi (byte) line_ydxd::x#3 = (byte) line_ydxd::x#5 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#2] -- register_copy jmp b1 - //SEG245 line_ydxd::@1 + //SEG240 line_ydxd::@1 b1: - //SEG246 [133] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + //SEG241 [128] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) // (byte) plot::x#3 = (byte) line_ydxd::x#3 // register copy reg byte x - //SEG247 [134] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuyy=vbuz1 + //SEG242 [129] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuyy=vbuz1 ldy y - //SEG248 [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - //SEG249 [102] phi from line_ydxd::@1 to plot [phi:line_ydxd::@1->plot] + //SEG243 [130] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + //SEG244 [102] phi from line_ydxd::@1 to plot [phi:line_ydxd::@1->plot] plot_from_b1: - //SEG250 [102] phi (byte) plot::y#4 = (byte) plot::y#3 [phi:line_ydxd::@1->plot#0] -- register_copy - //SEG251 [102] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy + //SEG245 [102] phi (byte) plot::y#4 = (byte) plot::y#3 [phi:line_ydxd::@1->plot#0] -- register_copy + //SEG246 [102] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy jsr plot jmp b5 - //SEG252 line_ydxd::@5 + //SEG247 line_ydxd::@5 b5: - //SEG253 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1 inc y - //SEG254 [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG255 [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2_from_b5 jmp b3 - //SEG256 line_ydxd::@3 + //SEG251 line_ydxd::@3 b3: - //SEG257 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) -- vbuxx=vbuxx_minus_1 + //SEG252 [134] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) -- vbuxx=vbuxx_minus_1 dex - //SEG258 [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG253 [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG259 [141] phi from line_ydxd::@3 line_ydxd::@5 to line_ydxd::@2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2] + //SEG254 [136] phi from line_ydxd::@3 line_ydxd::@5 to line_ydxd::@2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2] b2_from_b3: b2_from_b5: - //SEG260 [141] phi (byte) line_ydxd::e#6 = (byte) line_ydxd::e#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#0] -- register_copy - //SEG261 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy + //SEG255 [136] phi (byte) line_ydxd::e#6 = (byte) line_ydxd::e#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#0] -- register_copy + //SEG256 [136] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy jmp b2 - //SEG262 line_ydxd::@2 + //SEG257 line_ydxd::@2 b2: - //SEG263 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) -- vbuaa=vbuz1_plus_1 + //SEG258 [137] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) -- vbuaa=vbuz1_plus_1 lda y1 clc adc #1 - //SEG264 [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) -- vbuz1_lt_vbuaa_then_la1 + //SEG259 [138] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) -- vbuz1_lt_vbuaa_then_la1 cmp y bcs b1_from_b2 jmp breturn - //SEG265 line_ydxd::@return + //SEG260 line_ydxd::@return breturn: - //SEG266 [144] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) + //SEG261 [139] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) rts } -//SEG267 line_xdyd +//SEG262 line_xdyd line_xdyd: { .label _8 = $a .label y = 6 @@ -16415,164 +16139,164 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG268 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG263 [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG269 [147] phi from line_xdyd line_xdyd::@2 to line_xdyd::@1 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1] + //SEG264 [142] phi from line_xdyd line_xdyd::@2 to line_xdyd::@1 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1] b1_from_line_xdyd: b1_from_b2: - //SEG270 [147] phi (byte) line_xdyd::e#3 = (byte) line_xdyd::e#0 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#0] -- register_copy - //SEG271 [147] phi (byte) line_xdyd::y#3 = (byte) line_xdyd::y#5 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#1] -- register_copy - //SEG272 [147] phi (byte) line_xdyd::x#3 = (byte) line_xdyd::x#6 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#2] -- register_copy + //SEG265 [142] phi (byte) line_xdyd::e#3 = (byte) line_xdyd::e#0 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#0] -- register_copy + //SEG266 [142] phi (byte) line_xdyd::y#3 = (byte) line_xdyd::y#5 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#1] -- register_copy + //SEG267 [142] phi (byte) line_xdyd::x#3 = (byte) line_xdyd::x#6 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#2] -- register_copy jmp b1 - //SEG273 line_xdyd::@1 + //SEG268 line_xdyd::@1 b1: - //SEG274 [148] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG269 [143] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) // (byte) plot::x#1 = (byte) line_xdyd::x#3 // register copy reg byte x - //SEG275 [149] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuyy=vbuz1 + //SEG270 [144] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuyy=vbuz1 ldy y - //SEG276 [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - //SEG277 [102] phi from line_xdyd::@1 to plot [phi:line_xdyd::@1->plot] + //SEG271 [145] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG272 [102] phi from line_xdyd::@1 to plot [phi:line_xdyd::@1->plot] plot_from_b1: - //SEG278 [102] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:line_xdyd::@1->plot#0] -- register_copy - //SEG279 [102] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy + //SEG273 [102] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:line_xdyd::@1->plot#0] -- register_copy + //SEG274 [102] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy jsr plot jmp b5 - //SEG280 line_xdyd::@5 + //SEG275 line_xdyd::@5 b5: - //SEG281 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1 + //SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1 inx - //SEG282 [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG283 [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2_from_b5 jmp b3 - //SEG284 line_xdyd::@3 + //SEG279 line_xdyd::@3 b3: - //SEG285 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) -- vbuz1=vbuz1_minus_1 + //SEG280 [149] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) -- vbuz1=vbuz1_minus_1 dec y - //SEG286 [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG281 [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG287 [156] phi from line_xdyd::@3 line_xdyd::@5 to line_xdyd::@2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2] + //SEG282 [151] phi from line_xdyd::@3 line_xdyd::@5 to line_xdyd::@2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2] b2_from_b3: b2_from_b5: - //SEG288 [156] phi (byte) line_xdyd::e#6 = (byte) line_xdyd::e#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#0] -- register_copy - //SEG289 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy + //SEG283 [151] phi (byte) line_xdyd::e#6 = (byte) line_xdyd::e#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#0] -- register_copy + //SEG284 [151] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy jmp b2 - //SEG290 line_xdyd::@2 + //SEG285 line_xdyd::@2 b2: - //SEG291 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG286 [152] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) -- vbuz1=vbuz2_plus_1 lda x1 clc adc #1 sta _8 - //SEG292 [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 + //SEG287 [153] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 cpx _8 bcc b1_from_b2 jmp breturn - //SEG293 line_xdyd::@return + //SEG288 line_xdyd::@return breturn: - //SEG294 [159] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) + //SEG289 [154] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) rts } -//SEG295 init_plot_tables +//SEG290 init_plot_tables init_plot_tables: { .label _6 = 2 .label yoffs = 8 - //SEG296 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG291 [156] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG297 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG292 [156] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG298 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG293 [156] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG299 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG294 [156] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG300 [161] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG301 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG295 [156] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG296 [156] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG302 init_plot_tables::@1 + //SEG297 init_plot_tables::@1 b1: - //SEG303 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG298 [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG304 [163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG299 [158] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG305 [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG300 [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG306 [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy + //SEG301 [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG307 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 + //SEG302 [161] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG308 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 + //SEG303 [162] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 cpy #0 bne b10_from_b1 - //SEG309 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG304 [163] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG310 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG305 [163] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp b2 - //SEG311 init_plot_tables::@2 + //SEG306 init_plot_tables::@2 b2: - //SEG312 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx + //SEG307 [164] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG313 [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG308 [165] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG314 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG309 [166] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG315 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG310 [166] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG316 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG311 [166] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG317 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG312 [166] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG318 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG319 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG313 [166] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG314 [166] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy jmp b3 - //SEG320 init_plot_tables::@3 + //SEG315 init_plot_tables::@3 b3: - //SEG321 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 + //SEG316 [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG322 [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 + //SEG317 [168] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 lda yoffs - //SEG323 [174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa + //SEG318 [169] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG324 [175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG319 [170] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG325 [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 + //SEG320 [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG326 [177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG321 [172] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG327 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG322 [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG328 [179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG323 [174] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG329 init_plot_tables::@7 + //SEG324 init_plot_tables::@7 b7: - //SEG330 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + //SEG325 [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 lda yoffs clc adc #<$28*8 @@ -16580,91 +16304,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG331 [181] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG326 [176] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG332 [181] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG327 [176] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG333 init_plot_tables::@4 + //SEG328 init_plot_tables::@4 b4: - //SEG334 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx + //SEG329 [177] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG335 [183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG330 [178] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG336 init_plot_tables::@return + //SEG331 init_plot_tables::@return breturn: - //SEG337 [184] return [ ] ( main:2::init_plot_tables:10 [ ] ) + //SEG332 [179] return [ ] ( main:2::init_plot_tables:10 [ ] ) rts - //SEG338 [185] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG333 [180] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG339 init_plot_tables::@10 + //SEG334 init_plot_tables::@10 b10: - //SEG340 [168] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG335 [163] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG341 [168] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG336 [163] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG342 init_screen +//SEG337 init_screen init_screen: { .label b = 8 .label c = 8 - //SEG343 [187] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG338 [182] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG344 [187] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG339 [182] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG345 [187] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG340 [182] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG346 [187] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG341 [182] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG347 init_screen::@1 + //SEG342 init_screen::@1 b1: - //SEG348 [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #0 sta (b),y - //SEG349 [189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG350 [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG345 [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG346 [186] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG352 [191] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG347 [186] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG353 [191] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG348 [186] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG354 [191] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG349 [186] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG355 init_screen::@2 + //SEG350 init_screen::@2 b2: - //SEG356 [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #$14 sta (c),y - //SEG357 [193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG358 [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG353 [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -16672,9 +16396,9 @@ init_screen: { cmp #init_screen] + //SEG14 [181] phi from main to init_screen [phi:main->init_screen] jsr init_screen //SEG15 [9] phi from main to main::@3 [phi:main->main::@3] //SEG16 main::@3 //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] ) - //SEG18 [160] phi from main::@3 to init_plot_tables [phi:main::@3->init_plot_tables] + //SEG18 [155] phi from main::@3 to init_plot_tables [phi:main::@3->init_plot_tables] jsr init_plot_tables //SEG19 [11] phi from main::@3 main::@5 to main::@1 [phi:main::@3/main::@5->main::@1] //SEG20 main::@1 @@ -17264,17 +16979,17 @@ lines: { //SEG31 [16] phi (byte) lines::l#2 = (byte) lines::l#1 [phi:lines::@3->lines::@1#0] -- register_copy //SEG32 lines::@1 b1: - //SEG33 [17] (byte) line::x0#0 ← (const byte[]) lines_x#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG33 [17] (byte) line::x0#0 ← *((const byte[]) lines_x#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx l lda lines_x,x sta line.x0 - //SEG34 [18] (byte) line::x1#0 ← (const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG34 [18] (byte) line::x1#0 ← *((const byte[]) lines_x#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_x+1,x sta line.x1 - //SEG35 [19] (byte) line::y0#0 ← (const byte[]) lines_y#0 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG35 [19] (byte) line::y0#0 ← *((const byte[]) lines_y#0 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 lda lines_y,x tay - //SEG36 [20] (byte) line::y1#0 ← (const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 *idx (byte) lines::l#2 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG36 [20] (byte) line::y1#0 ← *((const byte[]) lines_y#0+(byte/signed byte/word/signed word) 1 + (byte) lines::l#2) [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ( main:2::lines:12 [ lines::l#2 line::x0#0 line::x1#0 line::y0#0 line::y1#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 lda lines_y+1,x sta line.y1 //SEG37 [21] call line param-assignment [ lines::l#2 ] ( main:2::lines:12 [ lines::l#2 ] ) @@ -17335,12 +17050,12 @@ line: { lda yd sta line_xdyi.yd //SEG57 [35] call line_xdyi param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG58 [115] phi from line::@17 to line_xdyi [phi:line::@17->line_xdyi] - //SEG59 [115] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#0 [phi:line::@17->line_xdyi#0] -- register_copy - //SEG60 [115] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#0 [phi:line::@17->line_xdyi#1] -- register_copy - //SEG61 [115] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#0 [phi:line::@17->line_xdyi#2] -- register_copy - //SEG62 [115] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#0 [phi:line::@17->line_xdyi#3] -- register_copy - //SEG63 [115] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#0 [phi:line::@17->line_xdyi#4] -- register_copy + //SEG58 [110] phi from line::@17 to line_xdyi [phi:line::@17->line_xdyi] + //SEG59 [110] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#0 [phi:line::@17->line_xdyi#0] -- register_copy + //SEG60 [110] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#0 [phi:line::@17->line_xdyi#1] -- register_copy + //SEG61 [110] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#0 [phi:line::@17->line_xdyi#2] -- register_copy + //SEG62 [110] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#0 [phi:line::@17->line_xdyi#3] -- register_copy + //SEG63 [110] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#0 [phi:line::@17->line_xdyi#4] -- register_copy jsr line_xdyi //SEG64 line::@return breturn: @@ -17394,12 +17109,12 @@ line: { lda yd sta line_xdyd.yd //SEG88 [50] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG89 [145] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] - //SEG90 [145] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy - //SEG91 [145] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#0 [phi:line::@20->line_xdyd#1] -- register_copy - //SEG92 [145] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#0 [phi:line::@20->line_xdyd#2] -- register_copy - //SEG93 [145] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#0 [phi:line::@20->line_xdyd#3] -- register_copy - //SEG94 [145] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#0 [phi:line::@20->line_xdyd#4] -- register_copy + //SEG89 [140] phi from line::@20 to line_xdyd [phi:line::@20->line_xdyd] + //SEG90 [140] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#0 [phi:line::@20->line_xdyd#0] -- register_copy + //SEG91 [140] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#0 [phi:line::@20->line_xdyd#1] -- register_copy + //SEG92 [140] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#0 [phi:line::@20->line_xdyd#2] -- register_copy + //SEG93 [140] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#0 [phi:line::@20->line_xdyd#3] -- register_copy + //SEG94 [140] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#0 [phi:line::@20->line_xdyd#4] -- register_copy jsr line_xdyd jmp breturn //SEG95 line::@6 @@ -17418,12 +17133,12 @@ line: { lda xd sta line_ydxd.xd //SEG101 [56] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG102 [130] phi from line::@6 to line_ydxd [phi:line::@6->line_ydxd] - //SEG103 [130] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#0 [phi:line::@6->line_ydxd#0] -- register_copy - //SEG104 [130] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#0 [phi:line::@6->line_ydxd#1] -- register_copy - //SEG105 [130] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#0 [phi:line::@6->line_ydxd#2] -- register_copy - //SEG106 [130] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#0 [phi:line::@6->line_ydxd#3] -- register_copy - //SEG107 [130] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#0 [phi:line::@6->line_ydxd#4] -- register_copy + //SEG102 [125] phi from line::@6 to line_ydxd [phi:line::@6->line_ydxd] + //SEG103 [125] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#0 [phi:line::@6->line_ydxd#0] -- register_copy + //SEG104 [125] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#0 [phi:line::@6->line_ydxd#1] -- register_copy + //SEG105 [125] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#0 [phi:line::@6->line_ydxd#2] -- register_copy + //SEG106 [125] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#0 [phi:line::@6->line_ydxd#3] -- register_copy + //SEG107 [125] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#0 [phi:line::@6->line_ydxd#4] -- register_copy jsr line_ydxd jmp breturn //SEG108 line::@1 @@ -17462,12 +17177,12 @@ line: { lda yd sta line_xdyd.yd //SEG120 [66] call line_xdyd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG121 [145] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] - //SEG122 [145] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy - //SEG123 [145] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#1 [phi:line::@24->line_xdyd#1] -- register_copy - //SEG124 [145] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#1 [phi:line::@24->line_xdyd#2] -- register_copy - //SEG125 [145] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#1 [phi:line::@24->line_xdyd#3] -- register_copy - //SEG126 [145] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#1 [phi:line::@24->line_xdyd#4] -- register_copy + //SEG121 [140] phi from line::@24 to line_xdyd [phi:line::@24->line_xdyd] + //SEG122 [140] phi (byte) line_xdyd::x1#6 = (byte) line_xdyd::x1#1 [phi:line::@24->line_xdyd#0] -- register_copy + //SEG123 [140] phi (byte) line_xdyd::xd#5 = (byte) line_xdyd::xd#1 [phi:line::@24->line_xdyd#1] -- register_copy + //SEG124 [140] phi (byte) line_xdyd::y#5 = (byte) line_xdyd::y#1 [phi:line::@24->line_xdyd#2] -- register_copy + //SEG125 [140] phi (byte) line_xdyd::x#6 = (byte) line_xdyd::x#1 [phi:line::@24->line_xdyd#3] -- register_copy + //SEG126 [140] phi (byte) line_xdyd::yd#2 = (byte) line_xdyd::yd#1 [phi:line::@24->line_xdyd#4] -- register_copy jsr line_xdyd jmp breturn //SEG127 line::@10 @@ -17485,12 +17200,12 @@ line: { lda xd sta line_ydxd.xd //SEG133 [72] call line_ydxd param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG134 [130] phi from line::@10 to line_ydxd [phi:line::@10->line_ydxd] - //SEG135 [130] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#1 [phi:line::@10->line_ydxd#0] -- register_copy - //SEG136 [130] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#1 [phi:line::@10->line_ydxd#1] -- register_copy - //SEG137 [130] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#1 [phi:line::@10->line_ydxd#2] -- register_copy - //SEG138 [130] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#1 [phi:line::@10->line_ydxd#3] -- register_copy - //SEG139 [130] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#1 [phi:line::@10->line_ydxd#4] -- register_copy + //SEG134 [125] phi from line::@10 to line_ydxd [phi:line::@10->line_ydxd] + //SEG135 [125] phi (byte) line_ydxd::y1#6 = (byte) line_ydxd::y1#1 [phi:line::@10->line_ydxd#0] -- register_copy + //SEG136 [125] phi (byte) line_ydxd::yd#5 = (byte) line_ydxd::yd#1 [phi:line::@10->line_ydxd#1] -- register_copy + //SEG137 [125] phi (byte) line_ydxd::y#6 = (byte) line_ydxd::y#1 [phi:line::@10->line_ydxd#2] -- register_copy + //SEG138 [125] phi (byte) line_ydxd::x#5 = (byte) line_ydxd::x#1 [phi:line::@10->line_ydxd#3] -- register_copy + //SEG139 [125] phi (byte) line_ydxd::xd#2 = (byte) line_ydxd::xd#1 [phi:line::@10->line_ydxd#4] -- register_copy jsr line_ydxd jmp breturn //SEG140 line::@9 @@ -17519,12 +17234,12 @@ line: { lda yd sta line_xdyi.yd //SEG149 [80] call line_xdyi param-assignment [ ] ( main:2::lines:12::line:21 [ lines::l#2 ] ) - //SEG150 [115] phi from line::@27 to line_xdyi [phi:line::@27->line_xdyi] - //SEG151 [115] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#1 [phi:line::@27->line_xdyi#0] -- register_copy - //SEG152 [115] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#1 [phi:line::@27->line_xdyi#1] -- register_copy - //SEG153 [115] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#1 [phi:line::@27->line_xdyi#2] -- register_copy - //SEG154 [115] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#1 [phi:line::@27->line_xdyi#3] -- register_copy - //SEG155 [115] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#1 [phi:line::@27->line_xdyi#4] -- register_copy + //SEG150 [110] phi from line::@27 to line_xdyi [phi:line::@27->line_xdyi] + //SEG151 [110] phi (byte) line_xdyi::x1#6 = (byte) line_xdyi::x1#1 [phi:line::@27->line_xdyi#0] -- register_copy + //SEG152 [110] phi (byte) line_xdyi::xd#5 = (byte) line_xdyi::xd#1 [phi:line::@27->line_xdyi#1] -- register_copy + //SEG153 [110] phi (byte) line_xdyi::y#5 = (byte) line_xdyi::y#1 [phi:line::@27->line_xdyi#2] -- register_copy + //SEG154 [110] phi (byte) line_xdyi::x#6 = (byte) line_xdyi::x#1 [phi:line::@27->line_xdyi#3] -- register_copy + //SEG155 [110] phi (byte) line_xdyi::yd#2 = (byte) line_xdyi::yd#1 [phi:line::@27->line_xdyi#4] -- register_copy jsr line_xdyi jmp breturn //SEG156 line::@13 @@ -17616,49 +17331,40 @@ line_ydxi: { } //SEG197 plot plot: { - .label _2 = $a - .label _4 = 8 + .label _0 = 8 .label plotter_x = 8 .label plotter_y = $b .label plotter = 8 - //SEG198 [103] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG198 [103] (word) plot::plotter_x#0 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#4) w= *((const byte[]) plot_xlo#0 + (byte) plot::x#4) [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda plot_xhi,x - //SEG199 [104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::$0 plot::$1 ] ) - // [104] plot::$1 ← plot_xlo#0 *idx plot::x#4 // ALU - //SEG200 [105] (word) plot::plotter_x#0 ← (byte~) plot::$0 w= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 ] ) -- vwuz1=vbuaa_word_pbuc1_derefidx_vbuxx sta plotter_x+1 lda plot_xlo,x sta plotter_x - //SEG201 [106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::y#4 plot::plotter_x#0 plot::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuyy + //SEG199 [104] (word) plot::plotter_y#0 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#4) w= *((const byte[]) plot_ylo#0 + (byte) plot::y#4) [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda plot_yhi,y - sta _2 - //SEG202 [107] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::$2 plot::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuyy - lda plot_ylo,y - //SEG203 [108] (word) plot::plotter_y#0 ← (byte~) plot::$2 w= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter_x#0 plot::plotter_y#0 ] ) -- vwuz1=vbuz2_word_vbuaa - sta plotter_y - lda _2 sta plotter_y+1 - //SEG204 [109] (word~) plot::$4 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$4 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$4 ] ) -- vwuz1=vwuz1_plus_vwuz2 - lda _4 + lda plot_ylo,y + sta plotter_y + //SEG200 [105] (word~) plot::$0 ← (word) plot::plotter_x#0 + (word) plot::plotter_y#0 [ plot::x#4 plot::$0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::$0 ] ) -- vwuz1=vwuz1_plus_vwuz2 + lda _0 clc adc plotter_y - sta _4 - lda _4+1 + sta _0 + lda _0+1 adc plotter_y+1 - sta _4+1 - //SEG205 [110] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$4 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) -- pbuz1=_ptrby_vwuz1 - //SEG206 [111] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$5 ] ) -- vbuaa=pbuc1_derefidx_vbuxx - lda plot_bit,x - //SEG207 [112] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuaa + sta _0+1 + //SEG201 [106] (byte*) plot::plotter#0 ← ((byte*)) (word~) plot::$0 [ plot::x#4 plot::plotter#0 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::x#4 plot::plotter#0 ] ) -- pbuz1=_ptrby_vwuz1 + //SEG202 [107] (byte~) plot::$1 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#4) [ plot::plotter#0 plot::$1 ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 plot::plotter#0 plot::$1 ] ) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx ldy #0 - ora (plotter),y - //SEG208 [113] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuaa + lda (plotter),y + ora plot_bit,x + //SEG203 [108] *((byte*) plot::plotter#0) ← (byte~) plot::$1 [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- _deref_pbuz1=vbuaa sta (plotter),y - //SEG209 plot::@return - //SEG210 [114] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:120 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:135 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:150 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG204 plot::@return + //SEG205 [109] return [ ] ( main:2::lines:12::line:21::line_ydxi:42::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_ydxi:86::plot:92 [ lines::l#2 line_ydxi::xd#2 line_ydxi::yd#5 line_ydxi::y1#6 line_ydxi::x#3 line_ydxi::y#3 line_ydxi::e#3 ] main:2::lines:12::line:21::line_xdyi:35::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80::plot:115 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_ydxd:56::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72::plot:130 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_xdyd:50::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66::plot:145 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) rts } -//SEG211 line_xdyi +//SEG206 line_xdyi line_xdyi: { .label _8 = $a .label y = 6 @@ -17666,125 +17372,125 @@ line_xdyi: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG212 [116] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG207 [111] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG213 [117] phi from line_xdyi line_xdyi::@2 to line_xdyi::@1 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1] - //SEG214 [117] phi (byte) line_xdyi::e#3 = (byte) line_xdyi::e#0 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#0] -- register_copy - //SEG215 [117] phi (byte) line_xdyi::y#3 = (byte) line_xdyi::y#5 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#1] -- register_copy - //SEG216 [117] phi (byte) line_xdyi::x#3 = (byte) line_xdyi::x#6 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#2] -- register_copy - //SEG217 line_xdyi::@1 + //SEG208 [112] phi from line_xdyi line_xdyi::@2 to line_xdyi::@1 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1] + //SEG209 [112] phi (byte) line_xdyi::e#3 = (byte) line_xdyi::e#0 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#0] -- register_copy + //SEG210 [112] phi (byte) line_xdyi::y#3 = (byte) line_xdyi::y#5 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#1] -- register_copy + //SEG211 [112] phi (byte) line_xdyi::x#3 = (byte) line_xdyi::x#6 [phi:line_xdyi/line_xdyi::@2->line_xdyi::@1#2] -- register_copy + //SEG212 line_xdyi::@1 b1: - //SEG218 [118] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + //SEG213 [113] (byte) plot::x#0 ← (byte) line_xdyi::x#3 [ plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) // (byte) plot::x#0 = (byte) line_xdyi::x#3 // register copy reg byte x - //SEG219 [119] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuyy=vbuz1 + //SEG214 [114] (byte) plot::y#0 ← (byte) line_xdyi::y#3 [ plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 plot::x#0 plot::y#0 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) -- vbuyy=vbuz1 ldy y - //SEG220 [120] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) - //SEG221 [102] phi from line_xdyi::@1 to plot [phi:line_xdyi::@1->plot] - //SEG222 [102] phi (byte) plot::y#4 = (byte) plot::y#0 [phi:line_xdyi::@1->plot#0] -- register_copy - //SEG223 [102] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy + //SEG215 [115] call plot param-assignment [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#3 line_xdyi::y#3 line_xdyi::e#3 ] ) + //SEG216 [102] phi from line_xdyi::@1 to plot [phi:line_xdyi::@1->plot] + //SEG217 [102] phi (byte) plot::y#4 = (byte) plot::y#0 [phi:line_xdyi::@1->plot#0] -- register_copy + //SEG218 [102] phi (byte) plot::x#4 = (byte) plot::x#0 [phi:line_xdyi::@1->plot#1] -- register_copy jsr plot - //SEG224 line_xdyi::@5 - //SEG225 [121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1 + //SEG219 line_xdyi::@5 + //SEG220 [116] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::e#3 line_xdyi::x#2 ] ) -- vbuxx=vbuxx_plus_1 inx - //SEG226 [122] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG221 [117] (byte) line_xdyi::e#1 ← (byte) line_xdyi::e#3 + (byte) line_xdyi::yd#2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG227 [123] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG222 [118] if((byte) line_xdyi::xd#5>=(byte) line_xdyi::e#1) goto line_xdyi::@2 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::y#3 line_xdyi::x#2 line_xdyi::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2 - //SEG228 line_xdyi::@3 - //SEG229 [124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG223 line_xdyi::@3 + //SEG224 [119] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::e#1 line_xdyi::y#2 ] ) -- vbuz1=vbuz1_plus_1 inc y - //SEG230 [125] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG225 [120] (byte) line_xdyi::e#2 ← (byte) line_xdyi::e#1 - (byte) line_xdyi::xd#5 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#2 line_xdyi::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG231 [126] phi from line_xdyi::@3 line_xdyi::@5 to line_xdyi::@2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2] - //SEG232 [126] phi (byte) line_xdyi::e#6 = (byte) line_xdyi::e#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#0] -- register_copy - //SEG233 [126] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy - //SEG234 line_xdyi::@2 + //SEG226 [121] phi from line_xdyi::@3 line_xdyi::@5 to line_xdyi::@2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2] + //SEG227 [121] phi (byte) line_xdyi::e#6 = (byte) line_xdyi::e#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#0] -- register_copy + //SEG228 [121] phi (byte) line_xdyi::y#6 = (byte) line_xdyi::y#2 [phi:line_xdyi::@3/line_xdyi::@5->line_xdyi::@2#1] -- register_copy + //SEG229 line_xdyi::@2 b2: - //SEG235 [127] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG230 [122] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 line_xdyi::$8 ] ) -- vbuz1=vbuz2_plus_1 lda x1 clc adc #1 sta _8 - //SEG236 [128] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 + //SEG231 [123] if((byte) line_xdyi::x#2<(byte~) line_xdyi::$8) goto line_xdyi::@1 [ line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 line_xdyi::yd#2 line_xdyi::xd#5 line_xdyi::x1#6 line_xdyi::x#2 line_xdyi::y#6 line_xdyi::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 cpx _8 bcc b1 - //SEG237 line_xdyi::@return - //SEG238 [129] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) + //SEG232 line_xdyi::@return + //SEG233 [124] return [ ] ( main:2::lines:12::line:21::line_xdyi:35 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyi:80 [ lines::l#2 ] ) rts } -//SEG239 line_ydxd +//SEG234 line_ydxd line_ydxd: { .label y = 6 .label y1 = 5 .label yd = 4 .label xd = 3 .label e = 7 - //SEG240 [131] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG235 [126] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda xd lsr sta e - //SEG241 [132] phi from line_ydxd line_ydxd::@2 to line_ydxd::@1 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1] - //SEG242 [132] phi (byte) line_ydxd::e#3 = (byte) line_ydxd::e#0 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#0] -- register_copy - //SEG243 [132] phi (byte) line_ydxd::y#3 = (byte) line_ydxd::y#6 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#1] -- register_copy - //SEG244 [132] phi (byte) line_ydxd::x#3 = (byte) line_ydxd::x#5 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#2] -- register_copy - //SEG245 line_ydxd::@1 + //SEG236 [127] phi from line_ydxd line_ydxd::@2 to line_ydxd::@1 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1] + //SEG237 [127] phi (byte) line_ydxd::e#3 = (byte) line_ydxd::e#0 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#0] -- register_copy + //SEG238 [127] phi (byte) line_ydxd::y#3 = (byte) line_ydxd::y#6 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#1] -- register_copy + //SEG239 [127] phi (byte) line_ydxd::x#3 = (byte) line_ydxd::x#5 [phi:line_ydxd/line_ydxd::@2->line_ydxd::@1#2] -- register_copy + //SEG240 line_ydxd::@1 b1: - //SEG246 [133] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + //SEG241 [128] (byte) plot::x#3 ← (byte) line_ydxd::x#3 [ plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) // (byte) plot::x#3 = (byte) line_ydxd::x#3 // register copy reg byte x - //SEG247 [134] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuyy=vbuz1 + //SEG242 [129] (byte) plot::y#3 ← (byte) line_ydxd::y#3 [ plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 plot::x#3 plot::y#3 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) -- vbuyy=vbuz1 ldy y - //SEG248 [135] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) - //SEG249 [102] phi from line_ydxd::@1 to plot [phi:line_ydxd::@1->plot] - //SEG250 [102] phi (byte) plot::y#4 = (byte) plot::y#3 [phi:line_ydxd::@1->plot#0] -- register_copy - //SEG251 [102] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy + //SEG243 [130] call plot param-assignment [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#3 line_ydxd::e#3 ] ) + //SEG244 [102] phi from line_ydxd::@1 to plot [phi:line_ydxd::@1->plot] + //SEG245 [102] phi (byte) plot::y#4 = (byte) plot::y#3 [phi:line_ydxd::@1->plot#0] -- register_copy + //SEG246 [102] phi (byte) plot::x#4 = (byte) plot::x#3 [phi:line_ydxd::@1->plot#1] -- register_copy jsr plot - //SEG252 line_ydxd::@5 - //SEG253 [136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1 + //SEG247 line_ydxd::@5 + //SEG248 [131] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::e#3 line_ydxd::y#2 ] ) -- vbuz1=vbuz1_plus_1 inc y - //SEG254 [137] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG249 [132] (byte) line_ydxd::e#1 ← (byte) line_ydxd::e#3 + (byte) line_ydxd::xd#2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc xd sta e - //SEG255 [138] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG250 [133] if((byte) line_ydxd::yd#5>=(byte) line_ydxd::e#1) goto line_ydxd::@2 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#3 line_ydxd::y#2 line_ydxd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda yd cmp e bcs b2 - //SEG256 line_ydxd::@3 - //SEG257 [139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) -- vbuxx=vbuxx_minus_1 + //SEG251 line_ydxd::@3 + //SEG252 [134] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::e#1 line_ydxd::x#2 ] ) -- vbuxx=vbuxx_minus_1 dex - //SEG258 [140] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG253 [135] (byte) line_ydxd::e#2 ← (byte) line_ydxd::e#1 - (byte) line_ydxd::yd#5 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::y#2 line_ydxd::x#2 line_ydxd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc yd sta e - //SEG259 [141] phi from line_ydxd::@3 line_ydxd::@5 to line_ydxd::@2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2] - //SEG260 [141] phi (byte) line_ydxd::e#6 = (byte) line_ydxd::e#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#0] -- register_copy - //SEG261 [141] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy - //SEG262 line_ydxd::@2 + //SEG254 [136] phi from line_ydxd::@3 line_ydxd::@5 to line_ydxd::@2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2] + //SEG255 [136] phi (byte) line_ydxd::e#6 = (byte) line_ydxd::e#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#0] -- register_copy + //SEG256 [136] phi (byte) line_ydxd::x#6 = (byte) line_ydxd::x#2 [phi:line_ydxd::@3/line_ydxd::@5->line_ydxd::@2#1] -- register_copy + //SEG257 line_ydxd::@2 b2: - //SEG263 [142] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) -- vbuaa=vbuz1_plus_1 + //SEG258 [137] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte/signed byte/word/signed word) 1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 line_ydxd::$8 ] ) -- vbuaa=vbuz1_plus_1 lda y1 clc adc #1 - //SEG264 [143] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) -- vbuz1_lt_vbuaa_then_la1 + //SEG259 [138] if((byte) line_ydxd::y#2<(byte~) line_ydxd::$8) goto line_ydxd::@1 [ line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 line_ydxd::xd#2 line_ydxd::yd#5 line_ydxd::y1#6 line_ydxd::x#6 line_ydxd::y#2 line_ydxd::e#6 ] ) -- vbuz1_lt_vbuaa_then_la1 cmp y bcs b1 - //SEG265 line_ydxd::@return - //SEG266 [144] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) + //SEG260 line_ydxd::@return + //SEG261 [139] return [ ] ( main:2::lines:12::line:21::line_ydxd:56 [ lines::l#2 ] main:2::lines:12::line:21::line_ydxd:72 [ lines::l#2 ] ) rts } -//SEG267 line_xdyd +//SEG262 line_xdyd line_xdyd: { .label _8 = $a .label y = 6 @@ -17792,138 +17498,138 @@ line_xdyd: { .label xd = 4 .label yd = 3 .label e = 7 - //SEG268 [146] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 + //SEG263 [141] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::e#0 ] ) -- vbuz1=vbuz2_ror_1 lda yd lsr sta e - //SEG269 [147] phi from line_xdyd line_xdyd::@2 to line_xdyd::@1 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1] - //SEG270 [147] phi (byte) line_xdyd::e#3 = (byte) line_xdyd::e#0 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#0] -- register_copy - //SEG271 [147] phi (byte) line_xdyd::y#3 = (byte) line_xdyd::y#5 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#1] -- register_copy - //SEG272 [147] phi (byte) line_xdyd::x#3 = (byte) line_xdyd::x#6 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#2] -- register_copy - //SEG273 line_xdyd::@1 + //SEG264 [142] phi from line_xdyd line_xdyd::@2 to line_xdyd::@1 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1] + //SEG265 [142] phi (byte) line_xdyd::e#3 = (byte) line_xdyd::e#0 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#0] -- register_copy + //SEG266 [142] phi (byte) line_xdyd::y#3 = (byte) line_xdyd::y#5 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#1] -- register_copy + //SEG267 [142] phi (byte) line_xdyd::x#3 = (byte) line_xdyd::x#6 [phi:line_xdyd/line_xdyd::@2->line_xdyd::@1#2] -- register_copy + //SEG268 line_xdyd::@1 b1: - //SEG274 [148] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG269 [143] (byte) plot::x#1 ← (byte) line_xdyd::x#3 [ plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) // (byte) plot::x#1 = (byte) line_xdyd::x#3 // register copy reg byte x - //SEG275 [149] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuyy=vbuz1 + //SEG270 [144] (byte) plot::y#1 ← (byte) line_xdyd::y#3 [ plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 plot::x#1 plot::y#1 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) -- vbuyy=vbuz1 ldy y - //SEG276 [150] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) - //SEG277 [102] phi from line_xdyd::@1 to plot [phi:line_xdyd::@1->plot] - //SEG278 [102] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:line_xdyd::@1->plot#0] -- register_copy - //SEG279 [102] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy + //SEG271 [145] call plot param-assignment [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] ) + //SEG272 [102] phi from line_xdyd::@1 to plot [phi:line_xdyd::@1->plot] + //SEG273 [102] phi (byte) plot::y#4 = (byte) plot::y#1 [phi:line_xdyd::@1->plot#0] -- register_copy + //SEG274 [102] phi (byte) plot::x#4 = (byte) plot::x#1 [phi:line_xdyd::@1->plot#1] -- register_copy jsr plot - //SEG280 line_xdyd::@5 - //SEG281 [151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1 + //SEG275 line_xdyd::@5 + //SEG276 [146] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::e#3 line_xdyd::x#2 ] ) -- vbuxx=vbuxx_plus_1 inx - //SEG282 [152] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 + //SEG277 [147] (byte) line_xdyd::e#1 ← (byte) line_xdyd::e#3 + (byte) line_xdyd::yd#2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1=vbuz1_plus_vbuz2 lda e clc adc yd sta e - //SEG283 [153] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG278 [148] if((byte) line_xdyd::xd#5>=(byte) line_xdyd::e#1) goto line_xdyd::@2 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::y#3 line_xdyd::x#2 line_xdyd::e#1 ] ) -- vbuz1_ge_vbuz2_then_la1 lda xd cmp e bcs b2 - //SEG284 line_xdyd::@3 - //SEG285 [154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) -- vbuz1=vbuz1_minus_1 + //SEG279 line_xdyd::@3 + //SEG280 [149] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::e#1 line_xdyd::y#2 ] ) -- vbuz1=vbuz1_minus_1 dec y - //SEG286 [155] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG281 [150] (byte) line_xdyd::e#2 ← (byte) line_xdyd::e#1 - (byte) line_xdyd::xd#5 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#2 line_xdyd::e#2 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda e sec sbc xd sta e - //SEG287 [156] phi from line_xdyd::@3 line_xdyd::@5 to line_xdyd::@2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2] - //SEG288 [156] phi (byte) line_xdyd::e#6 = (byte) line_xdyd::e#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#0] -- register_copy - //SEG289 [156] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy - //SEG290 line_xdyd::@2 + //SEG282 [151] phi from line_xdyd::@3 line_xdyd::@5 to line_xdyd::@2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2] + //SEG283 [151] phi (byte) line_xdyd::e#6 = (byte) line_xdyd::e#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#0] -- register_copy + //SEG284 [151] phi (byte) line_xdyd::y#6 = (byte) line_xdyd::y#2 [phi:line_xdyd::@3/line_xdyd::@5->line_xdyd::@2#1] -- register_copy + //SEG285 line_xdyd::@2 b2: - //SEG291 [157] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) -- vbuz1=vbuz2_plus_1 + //SEG286 [152] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte/signed byte/word/signed word) 1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 line_xdyd::$8 ] ) -- vbuz1=vbuz2_plus_1 lda x1 clc adc #1 sta _8 - //SEG292 [158] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 + //SEG287 [153] if((byte) line_xdyd::x#2<(byte~) line_xdyd::$8) goto line_xdyd::@1 [ line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#2 line_xdyd::y#6 line_xdyd::e#6 ] ) -- vbuxx_lt_vbuz1_then_la1 cpx _8 bcc b1 - //SEG293 line_xdyd::@return - //SEG294 [159] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) + //SEG288 line_xdyd::@return + //SEG289 [154] return [ ] ( main:2::lines:12::line:21::line_xdyd:50 [ lines::l#2 ] main:2::lines:12::line:21::line_xdyd:66 [ lines::l#2 ] ) rts } -//SEG295 init_plot_tables +//SEG290 init_plot_tables init_plot_tables: { .label _6 = 2 .label yoffs = 8 - //SEG296 [161] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG297 [161] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG291 [156] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG292 [156] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG298 [161] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG293 [156] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG299 [161] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] - //SEG300 [161] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG301 [161] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy - //SEG302 init_plot_tables::@1 + //SEG294 [156] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG295 [156] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG296 [156] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG297 init_plot_tables::@1 b1: - //SEG303 [162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG298 [157] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG304 [163] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG299 [158] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG305 [164] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG300 [159] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG306 [165] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy + //SEG301 [160] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG307 [166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 + //SEG302 [161] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG308 [167] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 + //SEG303 [162] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 cpy #0 bne b2 - //SEG309 [168] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG310 [168] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG304 [163] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG305 [163] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 - //SEG311 init_plot_tables::@2 + //SEG306 init_plot_tables::@2 b2: - //SEG312 [169] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx + //SEG307 [164] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG313 [170] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG308 [165] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG314 [171] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG315 [171] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG309 [166] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG310 [166] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs sta yoffs+1 - //SEG316 [171] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG311 [166] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 tax - //SEG317 [171] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] - //SEG318 [171] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG319 [171] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy - //SEG320 init_plot_tables::@3 + //SEG312 [166] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG313 [166] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG314 [166] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG315 init_plot_tables::@3 b3: - //SEG321 [172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 + //SEG316 [167] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG322 [173] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 + //SEG317 [168] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 lda yoffs - //SEG323 [174] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa + //SEG318 [169] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG324 [175] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG319 [170] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG325 [176] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 + //SEG320 [171] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG326 [177] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG321 [172] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG327 [178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG322 [173] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG328 [179] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG323 [174] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG329 init_plot_tables::@7 - //SEG330 [180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + //SEG324 init_plot_tables::@7 + //SEG325 [175] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 lda yoffs clc adc #<$28*8 @@ -17931,81 +17637,81 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG331 [181] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] - //SEG332 [181] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy - //SEG333 init_plot_tables::@4 + //SEG326 [176] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG327 [176] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG328 init_plot_tables::@4 b4: - //SEG334 [182] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx + //SEG329 [177] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG335 [183] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG330 [178] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG336 init_plot_tables::@return - //SEG337 [184] return [ ] ( main:2::init_plot_tables:10 [ ] ) + //SEG331 init_plot_tables::@return + //SEG332 [179] return [ ] ( main:2::init_plot_tables:10 [ ] ) rts - //SEG338 [185] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] - //SEG339 init_plot_tables::@10 - //SEG340 [168] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] - //SEG341 [168] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG333 [180] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG334 init_plot_tables::@10 + //SEG335 [163] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG336 [163] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy } -//SEG342 init_screen +//SEG337 init_screen init_screen: { .label b = 8 .label c = 8 - //SEG343 [187] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG344 [187] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG338 [182] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG339 [182] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 - //SEG345 [187] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG346 [187] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG347 init_screen::@1 + //SEG340 [182] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG341 [182] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG342 init_screen::@1 b1: - //SEG348 [188] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG343 [183] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 tya sta (b),y - //SEG349 [189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG344 [184] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG350 [190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG345 [185] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #init_screen::@2] - //SEG352 [191] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG346 [186] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG347 [186] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 - //SEG353 [191] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] - //SEG354 [191] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG355 init_screen::@2 + //SEG348 [186] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG349 [186] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG350 init_screen::@2 b2: - //SEG356 [192] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG351 [187] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #$14 sta (c),y - //SEG357 [193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG352 [188] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG358 [194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG353 [189] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [40] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [46] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) - [47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [49] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [49] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) - [51] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) - [52] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) - [53] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) - [55] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) + [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) + [52] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) + [54] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [59] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) - [60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) + [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [62] return [ ] ( main:2::init_plot_tables:10 [ ] ) + [61] return [ ] ( main:2::init_plot_tables:10 [ ] ) to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [63] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [62] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [64] phi() [ ] ( main:2::init_screen:8 [ ] ) + [63] phi() [ ] ( main:2::init_screen:8 [ ] ) to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [65] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) - [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [69] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) - [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [73] return [ ] ( main:2::init_screen:8 [ ] ) + [72] return [ ] ( main:2::init_screen:8 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log index 94827f2ec..b98168de8 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bitmap-plotter.log @@ -95,10 +95,6 @@ Adding pre/post-modifier *((byte*) BGCOL) ← -- *((byte*) BGCOL) Adding pre/post-modifier (byte) plots::i ← ++ (byte) plots::i Adding pre/post-modifier (byte*) init_screen::b ← ++ (byte*) init_screen::b Adding pre/post-modifier (byte*) init_screen::c ← ++ (byte*) init_screen::c -Fixing lo/hi-lvalue hi=(plot::plotter_x) ← plot::$0 -Fixing lo/hi-lvalue lo=(plot::plotter_x) ← plot::$1 -Fixing lo/hi-lvalue hi=(plot::plotter_y) ← plot::$2 -Fixing lo/hi-lvalue lo=(plot::plotter_y) ← plot::$3 PROGRAM (byte*) D011 ← (word) 53265 (byte) RST8 ← (byte/word/signed word) 128 @@ -149,12 +145,10 @@ endproc // main() proc (void()) plots() (byte) plots::i ← (byte/signed byte/word/signed word) 0 plots::@1: - (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i - (byte~) plots::$1 ← (byte[]) plots_y *idx (byte) plots::i - (void~) plots::$2 ← call plot (byte~) plots::$0 (byte~) plots::$1 + (void~) plots::$0 ← call plot *((byte[]) plots_x + (byte) plots::i) *((byte[]) plots_y + (byte) plots::i) (byte) plots::i ← ++ (byte) plots::i - (boolean~) plots::$3 ← (byte) plots::i < (byte) plots_cnt - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i < (byte) plots_cnt + if((boolean~) plots::$1) goto plots::@1 plots::@return: return endproc // plots() @@ -166,19 +160,18 @@ endproc // plots() proc (void()) plot((byte) plot::x , (byte) plot::y) (byte*) plot::plotter_x ← (byte/signed byte/word/signed word) 0 (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte~) plot::$0 ← > (byte*) plot::plotter_x + lval((byte~) plot::$0) ← *((byte[]) plot_xhi + (byte) plot::x) + (byte~) plot::$1 ← < (byte*) plot::plotter_x + lval((byte~) plot::$1) ← *((byte[]) plot_xlo + (byte) plot::x) + (byte~) plot::$2 ← > (word) plot::plotter_y + lval((byte~) plot::$2) ← *((byte[]) plot_yhi + (byte) plot::y) + (byte~) plot::$3 ← < (word) plot::plotter_y + lval((byte~) plot::$3) ← *((byte[]) plot_ylo + (byte) plot::y) (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y (byte*) plot::plotter ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$5 plot::@return: return endproc // plot() @@ -321,7 +314,6 @@ SYMBOLS (byte~) plot::$3 (byte*~) plot::$4 (byte~) plot::$5 -(byte~) plot::$6 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter_x @@ -334,10 +326,8 @@ SYMBOLS (byte[]) plot_yhi (byte[]) plot_ylo (void()) plots() -(byte~) plots::$0 -(byte~) plots::$1 -(void~) plots::$2 -(boolean~) plots::$3 +(void~) plots::$0 +(boolean~) plots::$1 (label) plots::@1 (label) plots::@return (byte) plots::i @@ -345,6 +335,10 @@ SYMBOLS (byte[]) plots_x (byte[]) plots_y +Fixing lo/hi-lvalue with new tmpVar plot::$6 plot::$6 ← *(plot_xhi + plot::x) +Fixing lo/hi-lvalue with new tmpVar plot::$7 plot::$7 ← *(plot_xlo + plot::x) +Fixing lo/hi-lvalue with new tmpVar plot::$8 plot::$8 ← *(plot_yhi + plot::y) +Fixing lo/hi-lvalue with new tmpVar plot::$9 plot::$9 ← *(plot_ylo + plot::y) Promoting word to byte* in D011 ← ((byte*)) 53265 Promoting word to byte* in RASTER ← ((byte*)) 53266 Promoting word to byte* in D016 ← ((byte*)) 53270 @@ -423,12 +417,10 @@ plots: scope:[plots] from (byte) plots::i ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@1 - (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i - (byte~) plots::$1 ← (byte[]) plots_y *idx (byte) plots::i - (void~) plots::$2 ← call plot (byte~) plots::$0 (byte~) plots::$1 + (void~) plots::$0 ← call plot *((byte[]) plots_x + (byte) plots::i) *((byte[]) plots_y + (byte) plots::i) (byte) plots::i ← ++ (byte) plots::i - (boolean~) plots::$3 ← (byte) plots::i < (byte) plots_cnt - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i < (byte) plots_cnt + if((boolean~) plots::$1) goto plots::@1 to:plots::@2 plots::@2: scope:[plots] from plots::@1 to:plots::@return @@ -445,19 +437,22 @@ plots::@return: scope:[plots] from plots::@2 plot: scope:[plot] from (byte*) plot::plotter_x ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte~) plot::$0 ← > (byte*) plot::plotter_x + (byte~) plot::$6 ← *((byte[]) plot_xhi + (byte) plot::x) + (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$6 + (byte~) plot::$1 ← < (byte*) plot::plotter_x + (byte~) plot::$7 ← *((byte[]) plot_xlo + (byte) plot::x) + (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$7 + (byte~) plot::$2 ← > (word) plot::plotter_y + (byte~) plot::$8 ← *((byte[]) plot_yhi + (byte) plot::y) + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$8 + (byte~) plot::$3 ← < (word) plot::plotter_y + (byte~) plot::$9 ← *((byte[]) plot_ylo + (byte) plot::y) + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y (byte*) plot::plotter ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -560,7 +555,11 @@ Eliminating unused variable (byte*) COLS and assignment [13] (byte*) COLS ← (( Eliminating unused variable - keeping the call (void~) main::$9 Eliminating unused variable - keeping the call (void~) main::$10 Eliminating unused variable - keeping the call (void~) main::$12 -Eliminating unused variable - keeping the call (void~) plots::$2 +Eliminating unused variable - keeping the call (void~) plots::$0 +Eliminating unused variable (byte~) plot::$0 and assignment [54] (byte~) plot::$0 ← > (byte*) plot::plotter_x +Eliminating unused variable (byte~) plot::$1 and assignment [57] (byte~) plot::$1 ← < (byte*) plot::plotter_x +Eliminating unused variable (byte~) plot::$2 and assignment [60] (byte~) plot::$2 ← > (word) plot::plotter_y +Eliminating unused variable (byte~) plot::$3 and assignment [63] (byte~) plot::$3 ← < (word) plot::plotter_y Removing empty block main::@4 Removing empty block plots::@2 Removing empty block @3 @@ -621,12 +620,10 @@ plots: scope:[plots] from (byte) plots::i ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@1 - (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i - (byte~) plots::$1 ← (byte[]) plots_y *idx (byte) plots::i - call plot (byte~) plots::$0 (byte~) plots::$1 + call plot *((byte[]) plots_x + (byte) plots::i) *((byte[]) plots_y + (byte) plots::i) (byte) plots::i ← ++ (byte) plots::i - (boolean~) plots::$3 ← (byte) plots::i < (byte) plots_cnt - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i < (byte) plots_cnt + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@1 return @@ -641,19 +638,18 @@ plots::@return: scope:[plots] from plots::@1 plot: scope:[plot] from (byte*) plot::plotter_x ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi + (byte) plot::x) + (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo + (byte) plot::x) + (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi + (byte) plot::y) + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo + (byte) plot::y) + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y (byte*) plot::plotter ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -801,16 +797,14 @@ plots: scope:[plots] from main::@3 (byte) plots::i ← (byte/signed byte/word/signed word) 0 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 - (byte~) plots::$0 ← (byte[]) plots_x *idx (byte) plots::i - (byte~) plots::$1 ← (byte[]) plots_y *idx (byte) plots::i - (byte) plot::x ← (byte~) plots::$0 - (byte) plot::y ← (byte~) plots::$1 + (byte) plot::x ← *((byte[]) plots_x + (byte) plots::i) + (byte) plot::y ← *((byte[]) plots_y + (byte) plots::i) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 (byte) plots::i ← ++ (byte) plots::i - (boolean~) plots::$3 ← (byte) plots::i < (byte) plots_cnt - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i < (byte) plots_cnt + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -825,19 +819,18 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 (byte*) plot::plotter_x ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo *idx (byte) plot::x - (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo *idx (byte) plot::y - (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi + (byte) plot::x) + (byte*) plot::plotter_x ← (byte*) plot::plotter_x hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo + (byte) plot::x) + (byte*) plot::plotter_x ← (byte*) plot::plotter_x lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi + (byte) plot::y) + (word) plot::plotter_y ← (word) plot::plotter_y hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo + (byte) plot::y) + (word) plot::plotter_y ← (word) plot::plotter_y lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x + (word) plot::plotter_y (byte*) plot::plotter ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit *idx (byte) plot::x - (byte~) plot::$6 ← *((byte*) plot::plotter) | (byte~) plot::$5 - *((byte*) plot::plotter) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter) | *((byte[]) plot_bit + (byte) plot::x) + *((byte*) plot::plotter) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1053,10 +1046,8 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 ) - (byte~) plots::$0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte~) plots::$1 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 - (byte) plot::x#0 ← (byte~) plots::$0 - (byte) plot::y#0 ← (byte~) plots::$1 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -1065,8 +1056,8 @@ plots::@3: scope:[plots] from plots::@1 (byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 ) (byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 ) (byte) plots::i#1 ← ++ (byte) plots::i#3 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -1095,19 +1086,18 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte*) plot::plotter#0 ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1342,10 +1332,8 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 ) - (byte~) plots::$0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte~) plots::$1 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 - (byte) plot::x#0 ← (byte~) plots::$0 - (byte) plot::y#0 ← (byte~) plots::$1 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -1354,8 +1342,8 @@ plots::@3: scope:[plots] from plots::@1 (byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 ) (byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 ) (byte) plots::i#1 ← ++ (byte) plots::i#3 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -1384,19 +1372,18 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte*) plot::plotter#0 ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1677,13 +1664,12 @@ INITIAL SSA SYMBOL TABLE (label) main::@7 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 -(byte~) plot::$1 -(byte~) plot::$2 -(byte~) plot::$3 (byte*~) plot::$4 (byte~) plot::$5 (byte~) plot::$6 +(byte~) plot::$7 +(byte~) plot::$8 +(byte~) plot::$9 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter#0 @@ -1712,9 +1698,7 @@ INITIAL SSA SYMBOL TABLE (byte[]) plot_ylo (byte[]) plot_ylo#0 (void()) plots() -(byte~) plots::$0 -(byte~) plots::$1 -(boolean~) plots::$3 +(boolean~) plots::$1 (label) plots::@1 (label) plots::@3 (label) plots::@return @@ -1886,10 +1870,8 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 ) - (byte~) plots::$0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte~) plots::$1 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 - (byte) plot::x#0 ← (byte~) plots::$0 - (byte) plot::y#0 ← (byte~) plots::$1 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -1898,8 +1880,8 @@ plots::@3: scope:[plots] from plots::@1 (byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 ) (byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 ) (byte) plots::i#1 ← ++ (byte) plots::i#3 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -1928,19 +1910,18 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte*) plot::plotter#0 ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2176,10 +2157,8 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#3 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#3 ) - (byte~) plots::$0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte~) plots::$1 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 - (byte) plot::x#0 ← (byte~) plots::$0 - (byte) plot::y#0 ← (byte~) plots::$1 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -2188,8 +2167,8 @@ plots::@3: scope:[plots] from plots::@1 (byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 ) (byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 ) (byte) plots::i#1 ← ++ (byte) plots::i#3 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -2218,19 +2197,18 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*~) plot::$4 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 (byte*) plot::plotter#0 ← (byte*~) plot::$4 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2383,8 +2361,6 @@ Alias (byte*) D011#0 = (byte*) D011#4 (byte*) D011#3 (byte*) D011#2 Alias (byte*) SCREEN#0 = (byte*) SCREEN#8 (byte*) SCREEN#7 (byte*) SCREEN#4 Alias (byte*) D018#0 = (byte*) D018#4 (byte*) D018#3 (byte*) D018#2 Alias (byte*) RASTER#0 = (byte*) RASTER#10 (byte*) RASTER#9 (byte*) RASTER#8 -Alias (byte) plot::x#0 = (byte~) plots::$0 -Alias (byte) plot::y#0 = (byte~) plots::$1 Alias (byte) plots::i#2 = (byte) plots::i#3 Alias (byte) plots_cnt#1 = (byte) plots_cnt#2 Alias (byte[]) plots_x#1 = (byte[]) plots_x#3 @@ -2484,14 +2460,14 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#1 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#1 ) - (byte) plot::x#0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 (byte) plots::i#1 ← ++ (byte) plots::i#2 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -2508,18 +2484,17 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2727,14 +2702,14 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 plots::@3/(byte[]) plots_y#1 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 plots::@3/(byte[]) plots_x#1 ) - (byte) plot::x#0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 (byte) plots::i#1 ← ++ (byte) plots::i#2 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -2751,18 +2726,17 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -2981,14 +2955,14 @@ plots::@1: scope:[plots] from plots plots::@3 (byte[]) plots_y#1 ← phi( plots/(byte[]) plots_y#2 ) (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) (byte[]) plots_x#1 ← phi( plots/(byte[]) plots_x#2 ) - (byte) plot::x#0 ← (byte[]) plots_x#1 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (byte[]) plots_y#1 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((byte[]) plots_x#1 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#1 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 (byte) plots::i#1 ← ++ (byte) plots::i#2 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#1 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -3005,18 +2979,17 @@ plot: scope:[plot] from plots::@1 (byte) plot::x#1 ← phi( plots::@1/(byte) plot::x#0 ) (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#1 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#1 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#1) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#1) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#1) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#1 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#1) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3199,14 +3172,14 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 (byte) plots::i#1 ← ++ (byte) plots::i#2 - (boolean~) plots::$3 ← (byte) plots::i#1 < (byte) plots_cnt#0 - if((boolean~) plots::$3) goto plots::@1 + (boolean~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#0 + if((boolean~) plots::$1) goto plots::@1 to:plots::@return plots::@return: scope:[plots] from plots::@3 return @@ -3221,18 +3194,17 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3323,7 +3295,7 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 @end: scope:[] from @5 Simple Condition (boolean~) main::$11 if(*((byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 -Simple Condition (boolean~) plots::$3 if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1 +Simple Condition (boolean~) plots::$1 if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1 Simple Condition (boolean~) init_plot_tables::$4 if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@2 Simple Condition (boolean~) init_plot_tables::$5 if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 Simple Condition (boolean~) init_plot_tables::$12 if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 @@ -3391,8 +3363,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -3412,18 +3384,17 @@ plots::@return: scope:[plots] from plots::@3 plot: scope:[plot] from plots::@1 (byte*) plot::plotter_x#0 ← ((byte*)) (byte/signed byte/word/signed word) 0 (word) plot::plotter_y#0 ← (byte/signed byte/word/signed word) 0 - (byte~) plot::$0 ← (byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3581,8 +3552,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(const byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -3595,18 +3566,17 @@ plots::@return: scope:[plots] from plots::@3 @2: scope:[] from @1 to:@5 plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3736,8 +3706,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(const byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -3750,18 +3720,17 @@ plots::@return: scope:[plots] from plots::@3 @2: scope:[] from @1 to:@5 plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -3878,8 +3847,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(const byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -3892,18 +3861,17 @@ plots::@return: scope:[plots] from plots::@3 @2: scope:[] from @1 to:@5 plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4017,8 +3985,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(const byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -4031,18 +3999,17 @@ plots::@return: scope:[plots] from plots::@3 @2: scope:[] from @1 to:@5 plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4154,8 +4121,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(const byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -4168,18 +4135,17 @@ plots::@return: scope:[plots] from plots::@3 @2: scope:[] from @1 to:@5 plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4252,13 +4218,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 to:@end @end: scope:[] from @5 -Multiple usages for variable. Not optimizing sub-constant (byte) plots::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plots::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -4304,8 +4263,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(const byte) plots::i#0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -4316,18 +4275,17 @@ plots::@return: scope:[plots] from plots::@3 return to:@return plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← (const byte*) plot::plotter_x#0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (const word) plot::plotter_y#0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4397,13 +4355,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2 @end: scope:[] from @5 Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5 -Multiple usages for variable. Not optimizing sub-constant (byte) plots::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plots::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -4411,13 +4362,6 @@ Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_table Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2 Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2 Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5 -Multiple usages for variable. Not optimizing sub-constant (byte) plots::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plots::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::y#0 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::x#0 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2 @@ -4502,8 +4446,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -4514,18 +4458,17 @@ plots::@return: scope:[plots] from plots::@3 return to:@return plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4663,12 +4606,11 @@ FINAL SYMBOL TABLE (label) main::@7 (label) main::@return (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 -(byte~) plot::$1 -(byte~) plot::$2 -(byte~) plot::$3 (byte~) plot::$5 (byte~) plot::$6 +(byte~) plot::$7 +(byte~) plot::$8 +(byte~) plot::$9 (label) plot::@return (byte*) plot::plotter (byte*) plot::plotter#0 @@ -4750,8 +4692,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@4 (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@4/(byte~) plots::i#4 ) - (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 - (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 + (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) + (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) call plot param-assignment to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -4765,18 +4707,17 @@ plots::@4: scope:[plots] from plots::@3 (byte~) plots::i#4 ← (byte) plots::i#1 to:plots::@1 plot: scope:[plot] from plots::@1 - (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 - (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 - (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 - (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 - (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 - (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 + (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 + (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) + (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 + (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) + (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 + (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) + (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 - (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 - (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 - *((byte*) plot::plotter#0) ← (byte~) plot::$6 + (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) + *((byte*) plot::plotter#0) ← (byte~) plot::$5 to:plot::@return plot::@return: scope:[plot] from plot return @@ -4923,8 +4864,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@4 [18] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@4/(byte~) plots::i#4 ) [ plots::i#2 ] - [19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] - [20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] + [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] + [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] [21] call plot param-assignment [ plots::i#2 ] to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -4938,117 +4879,116 @@ plots::@4: scope:[plots] from plots::@3 [25] (byte~) plots::i#4 ← (byte) plots::i#1 [ plots::i#4 ] to:plots::@1 plot: scope:[plot] from plots::@1 - [26] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [27] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] - [28] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] - [29] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] - [30] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] - [31] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] - [32] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] - [33] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] + [26] (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] + [27] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [28] (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] + [29] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] + [30] (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] + [31] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [32] (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] + [33] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] [34] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] - [35] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] - [36] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] - [37] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] + [35] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] + [36] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [38] return [ ] + [37] return [ ] to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [39] phi() [ ] + [38] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@9 - [40] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [40] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [41] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] - [42] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [43] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [44] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [45] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [46] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [39] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@9/(byte~) init_plot_tables::bits#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [39] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@9/(byte~) init_plot_tables::x#5 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] to:init_plot_tables::@5 init_plot_tables::@5: scope:[init_plot_tables] from init_plot_tables::@1 - [47] phi() [ init_plot_tables::x#2 ] + [46] phi() [ init_plot_tables::x#2 ] to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@10 init_plot_tables::@5 - [48] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] - [49] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] - [50] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] + [47] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte~) init_plot_tables::bits#6 init_plot_tables::@5/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [48] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] + [49] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@9 [ init_plot_tables::bits#4 init_plot_tables::x#1 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@11 init_plot_tables::@2 - [51] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [51] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [52] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] - [53] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] - [54] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] - [55] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [56] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] - [57] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [58] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [59] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [50] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@11/(byte*~) init_plot_tables::yoffs#5 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [50] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@11/(byte~) init_plot_tables::y#5 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [51] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [52] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] + [53] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] + [54] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [55] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] + [56] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [57] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] + [58] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@12 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [60] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] - [61] (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 [ init_plot_tables::y#2 init_plot_tables::yoffs#7 ] + [59] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [60] (byte*~) init_plot_tables::yoffs#7 ← (byte*) init_plot_tables::yoffs#1 [ init_plot_tables::y#2 init_plot_tables::yoffs#7 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@12 init_plot_tables::@7 - [62] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] - [63] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] - [64] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] + [61] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@12/(byte*~) init_plot_tables::yoffs#6 init_plot_tables::@7/(byte*~) init_plot_tables::yoffs#7 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] + [62] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] + [63] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@11 [ init_plot_tables::yoffs#4 init_plot_tables::y#1 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [65] return [ ] + [64] return [ ] to:@return init_plot_tables::@11: scope:[init_plot_tables] from init_plot_tables::@4 - [66] (byte~) init_plot_tables::y#5 ← (byte) init_plot_tables::y#1 [ init_plot_tables::y#5 init_plot_tables::yoffs#4 ] - [67] (byte*~) init_plot_tables::yoffs#5 ← (byte*) init_plot_tables::yoffs#4 [ init_plot_tables::y#5 init_plot_tables::yoffs#5 ] + [65] (byte~) init_plot_tables::y#5 ← (byte) init_plot_tables::y#1 [ init_plot_tables::y#5 init_plot_tables::yoffs#4 ] + [66] (byte*~) init_plot_tables::yoffs#5 ← (byte*) init_plot_tables::yoffs#4 [ init_plot_tables::y#5 init_plot_tables::yoffs#5 ] to:init_plot_tables::@3 init_plot_tables::@12: scope:[init_plot_tables] from init_plot_tables::@3 - [68] (byte*~) init_plot_tables::yoffs#6 ← (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#6 ] + [67] (byte*~) init_plot_tables::yoffs#6 ← (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#6 ] to:init_plot_tables::@4 init_plot_tables::@9: scope:[init_plot_tables] from init_plot_tables::@2 - [69] (byte~) init_plot_tables::x#5 ← (byte) init_plot_tables::x#1 [ init_plot_tables::x#5 init_plot_tables::bits#4 ] - [70] (byte~) init_plot_tables::bits#5 ← (byte) init_plot_tables::bits#4 [ init_plot_tables::x#5 init_plot_tables::bits#5 ] + [68] (byte~) init_plot_tables::x#5 ← (byte) init_plot_tables::x#1 [ init_plot_tables::x#5 init_plot_tables::bits#4 ] + [69] (byte~) init_plot_tables::bits#5 ← (byte) init_plot_tables::bits#4 [ init_plot_tables::x#5 init_plot_tables::bits#5 ] to:init_plot_tables::@1 init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [71] (byte~) init_plot_tables::bits#6 ← (byte) init_plot_tables::bits#1 [ init_plot_tables::x#2 init_plot_tables::bits#6 ] + [70] (byte~) init_plot_tables::bits#6 ← (byte) init_plot_tables::bits#1 [ init_plot_tables::x#2 init_plot_tables::bits#6 ] to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [72] phi() [ ] + [71] phi() [ ] to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@5 - [73] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) [ init_screen::b#2 ] - [74] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] - [75] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [76] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 [ init_screen::b#1 ] + [72] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@5/(byte*~) init_screen::b#3 ) [ init_screen::b#2 ] + [73] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] + [74] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] + [75] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@5 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@6 - [77] (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] - [78] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] - [79] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [80] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 [ init_screen::c#1 ] + [76] (byte*) init_screen::c#2 ← phi( init_screen::@6/(byte*~) init_screen::c#3 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] + [77] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] + [78] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] + [79] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@6 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [81] return [ ] + [80] return [ ] to:@return init_screen::@6: scope:[init_screen] from init_screen::@2 - [82] (byte*~) init_screen::c#3 ← (byte*) init_screen::c#1 [ init_screen::c#3 ] + [81] (byte*~) init_screen::c#3 ← (byte*) init_screen::c#1 [ init_screen::c#3 ] to:init_screen::@2 init_screen::@5: scope:[init_screen] from init_screen::@1 - [83] (byte*~) init_screen::b#3 ← (byte*) init_screen::b#1 [ init_screen::b#3 ] + [82] (byte*~) init_screen::b#3 ← (byte*) init_screen::b#1 [ init_screen::b#3 ] to:init_screen::@1 Created 9 initial phi equivalence classes Coalesced [25] plots::i#4 ← plots::i#1 -Coalesced [61] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 -Coalesced [66] init_plot_tables::y#5 ← init_plot_tables::y#1 -Coalesced [67] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 -Coalesced (already) [68] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 -Coalesced [69] init_plot_tables::x#5 ← init_plot_tables::x#1 -Coalesced [70] init_plot_tables::bits#5 ← init_plot_tables::bits#4 -Coalesced [71] init_plot_tables::bits#6 ← init_plot_tables::bits#1 -Coalesced [82] init_screen::c#3 ← init_screen::c#1 -Coalesced [83] init_screen::b#3 ← init_screen::b#1 +Coalesced [60] init_plot_tables::yoffs#7 ← init_plot_tables::yoffs#1 +Coalesced [65] init_plot_tables::y#5 ← init_plot_tables::y#1 +Coalesced [66] init_plot_tables::yoffs#5 ← init_plot_tables::yoffs#4 +Coalesced (already) [67] init_plot_tables::yoffs#6 ← init_plot_tables::yoffs#2 +Coalesced [68] init_plot_tables::x#5 ← init_plot_tables::x#1 +Coalesced [69] init_plot_tables::bits#5 ← init_plot_tables::bits#4 +Coalesced [70] init_plot_tables::bits#6 ← init_plot_tables::bits#1 +Coalesced [81] init_screen::c#3 ← init_screen::c#1 +Coalesced [82] init_screen::b#3 ← init_screen::b#1 Coalesced down to 7 phi equivalence classes Culled Empty Block (label) plots::@4 Culled Empty Block (label) init_plot_tables::@5 @@ -5115,8 +5055,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 [18] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] - [19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] - [20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] + [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] + [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] [21] call plot param-assignment [ plots::i#2 ] to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -5127,83 +5067,82 @@ plots::@return: scope:[plots] from plots::@3 [24] return [ ] to:@return plot: scope:[plot] from plots::@1 - [25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] - [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] - [27] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] - [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] - [29] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] - [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] - [31] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] - [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] + [25] (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] + [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] + [27] (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] + [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] + [29] (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] + [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] + [31] (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] + [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] - [34] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] - [35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] - [36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] + [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] + [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [37] return [ ] + [36] return [ ] to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [38] phi() [ ] + [37] phi() [ ] to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [39] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [39] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] - [41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] - [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] - [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] + [40] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] + [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [46] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] - [47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] - [48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] + [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] + [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] + [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [49] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [49] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] - [51] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] - [52] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] - [53] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] - [55] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] - [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] - [57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] + [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] + [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] + [52] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] + [54] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] + [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] + [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] + [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [59] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] - [60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] - [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] + [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] + [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] + [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [62] return [ ] + [61] return [ ] to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [63] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] + [62] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [64] phi() [ ] + [63] phi() [ ] to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [65] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] - [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] - [67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] - [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] + [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] + [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] + [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] + [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [69] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] - [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] - [71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] - [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] + [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] + [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] + [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] + [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [73] return [ ] + [72] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -5246,8 +5185,8 @@ plots: scope:[plots] from main::@3 to:plots::@1 plots::@1: scope:[plots] from plots plots::@3 [18] (byte) plots::i#2 ← phi( plots/(byte/signed byte/word/signed word) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] ) - [19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) - [20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) + [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) + [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) [21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] ) to:plots::@3 plots::@3: scope:[plots] from plots::@1 @@ -5258,83 +5197,82 @@ plots::@return: scope:[plots] from plots::@3 [24] return [ ] ( main:2::plots:13 [ ] ) to:@return plot: scope:[plot] from plots::@1 - [25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) - [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) - [27] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) - [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) - [29] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) - [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) - [31] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) - [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) + [25] (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) + [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) + [27] (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) + [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) + [29] (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) + [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) + [31] (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) + [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) - [34] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) - [35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] ) - [36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) + [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) + [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) to:plot::@return plot::@return: scope:[plot] from plot - [37] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) + [36] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) to:@return init_plot_tables: scope:[init_plot_tables] from main::@5 - [38] phi() [ ] ( main:2::init_plot_tables:10 [ ] ) + [37] phi() [ ] ( main:2::init_plot_tables:10 [ ] ) to:init_plot_tables::@1 init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2 - [39] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [39] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) - [41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) - [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) - [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) + [40] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) + [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10 - [46] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) - [47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) - [48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ) + [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) + [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) to:init_plot_tables::@3 init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4 - [49] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [49] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) - [51] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) - [52] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) - [53] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) - [55] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) - [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) - [57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) + [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) + [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) + [52] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) + [54] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) + [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) + [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) to:init_plot_tables::@7 init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3 - [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) + [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) to:init_plot_tables::@4 init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7 - [59] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) - [60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) - [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] ) + [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) + [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) to:init_plot_tables::@return init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4 - [62] return [ ] ( main:2::init_plot_tables:10 [ ] ) + [61] return [ ] ( main:2::init_plot_tables:10 [ ] ) to:@return init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1 - [63] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) + [62] phi() [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) to:init_plot_tables::@2 init_screen: scope:[init_screen] from main - [64] phi() [ ] ( main:2::init_screen:8 [ ] ) + [63] phi() [ ] ( main:2::init_screen:8 [ ] ) to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@1 - [65] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) - [67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) - [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 ) [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) + [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) + [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) to:init_screen::@2 init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2 - [69] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) - [71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) - [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 ) [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) + [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) + [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@2 - [73] return [ ] ( main:2::init_screen:8 [ ] ) + [72] return [ ] ( main:2::init_screen:8 [ ] ) to:@return DOMINATORS @@ -5453,14 +5391,13 @@ VARIABLE REGISTER WEIGHTS (byte*) init_screen::c#2 16.5 (void()) main() (void()) plot((byte) plot::x , (byte) plot::y) -(byte~) plot::$0 4.0 -(byte~) plot::$1 4.0 -(byte~) plot::$2 4.0 -(byte~) plot::$3 4.0 (byte~) plot::$5 4.0 (byte~) plot::$6 4.0 +(byte~) plot::$7 4.0 +(byte~) plot::$8 4.0 +(byte~) plot::$9 4.0 (byte*) plot::plotter -(byte*) plot::plotter#0 2.0 +(byte*) plot::plotter#0 3.0 (byte*) plot::plotter_x (byte*) plot::plotter_x#1 2.0 (byte*) plot::plotter_x#2 0.8 @@ -5494,17 +5431,16 @@ Initial phi equivalence classes [ init_screen::c#2 init_screen::c#1 ] Added variable plot::x#0 to zero page equivalence class [ plot::x#0 ] Added variable plot::y#0 to zero page equivalence class [ plot::y#0 ] -Added variable plot::$0 to zero page equivalence class [ plot::$0 ] +Added variable plot::$6 to zero page equivalence class [ plot::$6 ] Added variable plot::plotter_x#1 to zero page equivalence class [ plot::plotter_x#1 ] -Added variable plot::$1 to zero page equivalence class [ plot::$1 ] +Added variable plot::$7 to zero page equivalence class [ plot::$7 ] Added variable plot::plotter_x#2 to zero page equivalence class [ plot::plotter_x#2 ] -Added variable plot::$2 to zero page equivalence class [ plot::$2 ] +Added variable plot::$8 to zero page equivalence class [ plot::$8 ] Added variable plot::plotter_y#1 to zero page equivalence class [ plot::plotter_y#1 ] -Added variable plot::$3 to zero page equivalence class [ plot::$3 ] +Added variable plot::$9 to zero page equivalence class [ plot::$9 ] Added variable plot::plotter_y#2 to zero page equivalence class [ plot::plotter_y#2 ] Added variable plot::plotter#0 to zero page equivalence class [ plot::plotter#0 ] Added variable plot::$5 to zero page equivalence class [ plot::$5 ] -Added variable plot::$6 to zero page equivalence class [ plot::$6 ] Added variable init_plot_tables::$0 to zero page equivalence class [ init_plot_tables::$0 ] Added variable init_plot_tables::$6 to zero page equivalence class [ init_plot_tables::$6 ] Added variable init_plot_tables::$7 to zero page equivalence class [ init_plot_tables::$7 ] @@ -5521,17 +5457,16 @@ Complete equivalence classes [ init_screen::c#2 init_screen::c#1 ] [ plot::x#0 ] [ plot::y#0 ] -[ plot::$0 ] +[ plot::$6 ] [ plot::plotter_x#1 ] -[ plot::$1 ] +[ plot::$7 ] [ plot::plotter_x#2 ] -[ plot::$2 ] +[ plot::$8 ] [ plot::plotter_y#1 ] -[ plot::$3 ] +[ plot::$9 ] [ plot::plotter_y#2 ] [ plot::plotter#0 ] [ plot::$5 ] -[ plot::$6 ] [ init_plot_tables::$0 ] [ init_plot_tables::$6 ] [ init_plot_tables::$7 ] @@ -5547,23 +5482,22 @@ Allocated zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] Allocated zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] Allocated zp ZP_BYTE:12 [ plot::x#0 ] Allocated zp ZP_BYTE:13 [ plot::y#0 ] -Allocated zp ZP_BYTE:14 [ plot::$0 ] +Allocated zp ZP_BYTE:14 [ plot::$6 ] Allocated zp ZP_WORD:15 [ plot::plotter_x#1 ] -Allocated zp ZP_BYTE:17 [ plot::$1 ] +Allocated zp ZP_BYTE:17 [ plot::$7 ] Allocated zp ZP_WORD:18 [ plot::plotter_x#2 ] -Allocated zp ZP_BYTE:20 [ plot::$2 ] +Allocated zp ZP_BYTE:20 [ plot::$8 ] Allocated zp ZP_WORD:21 [ plot::plotter_y#1 ] -Allocated zp ZP_BYTE:23 [ plot::$3 ] +Allocated zp ZP_BYTE:23 [ plot::$9 ] Allocated zp ZP_WORD:24 [ plot::plotter_y#2 ] Allocated zp ZP_WORD:26 [ plot::plotter#0 ] Allocated zp ZP_BYTE:28 [ plot::$5 ] -Allocated zp ZP_BYTE:29 [ plot::$6 ] -Allocated zp ZP_BYTE:30 [ init_plot_tables::$0 ] -Allocated zp ZP_BYTE:31 [ init_plot_tables::$6 ] -Allocated zp ZP_BYTE:32 [ init_plot_tables::$7 ] -Allocated zp ZP_BYTE:33 [ init_plot_tables::$8 ] -Allocated zp ZP_BYTE:34 [ init_plot_tables::$9 ] -Allocated zp ZP_BYTE:35 [ init_plot_tables::$10 ] +Allocated zp ZP_BYTE:29 [ init_plot_tables::$0 ] +Allocated zp ZP_BYTE:30 [ init_plot_tables::$6 ] +Allocated zp ZP_BYTE:31 [ init_plot_tables::$7 ] +Allocated zp ZP_BYTE:32 [ init_plot_tables::$8 ] +Allocated zp ZP_BYTE:33 [ init_plot_tables::$9 ] +Allocated zp ZP_BYTE:34 [ init_plot_tables::$10 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -5617,7 +5551,7 @@ main: { lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400) sta D018 //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] ) - //SEG14 [64] phi from main to init_screen [phi:main->init_screen] + //SEG14 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG15 [9] phi from main to main::@5 [phi:main->main::@5] @@ -5626,7 +5560,7 @@ main: { //SEG16 main::@5 b5: //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] ) - //SEG18 [38] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] init_plot_tables_from_b5: jsr init_plot_tables jmp b2 @@ -5673,11 +5607,11 @@ plots: { jmp b1 //SEG35 plots::@1 b1: - //SEG36 [19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda plots_x,x sta plot.x - //SEG37 [20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda plots_y,x sta plot.y @@ -5700,12 +5634,11 @@ plots: { } //SEG44 plot plot: { - .label _0 = $e - .label _1 = $11 - .label _2 = $14 - .label _3 = $17 .label _5 = $1c - .label _6 = $1d + .label _6 = $e + .label _7 = $11 + .label _8 = $14 + .label _9 = $17 .label x = $c .label y = $d .label plotter_x = $f @@ -5713,39 +5646,39 @@ plot: { .label plotter_y = $15 .label plotter_y_2 = $18 .label plotter = $1a - //SEG45 [25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG45 [25] (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx x lda plot_xhi,x - sta _0 - //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuz2 - lda _0 + sta _6 + //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuz2 + lda _6 sta plotter_x+1 lda #<0 sta plotter_x - //SEG47 [27] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG47 [27] (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx x lda plot_xlo,x - sta _1 - //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz2_setlo_vbuz3 - lda _1 + sta _7 + //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz2_setlo_vbuz3 + lda _7 sta plotter_x_2 lda plotter_x+1 sta plotter_x_2+1 - //SEG49 [29] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG49 [29] (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx y lda plot_yhi,x - sta _2 - //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuz2 + sta _8 + //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuz2 lda #0 sta plotter_y - lda _2 + lda _8 sta plotter_y+1 - //SEG51 [31] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG51 [31] (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx y lda plot_ylo,x - sta _3 - //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz2_setlo_vbuz3 - lda _3 + sta _9 + //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz2_setlo_vbuz3 + lda _9 sta plotter_y_2 lda plotter_y+1 sta plotter_y_2+1 @@ -5757,139 +5690,136 @@ plot: { lda plotter+1 adc plotter_x_2+1 sta plotter_y_2+1 - //SEG54 [34] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx x - lda plot_bit,x - sta _5 - //SEG55 [35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] ) -- vbuz1=_deref_pbuz2_bor_vbuz3 + //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (plotter),y - ora _5 - sta _6 - //SEG56 [36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuz2 + ldx x + ora plot_bit,x + sta _5 + //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuz2 ldy #0 - lda _6 + lda _5 sta (plotter),y jmp breturn - //SEG57 plot::@return + //SEG56 plot::@return breturn: - //SEG58 [37] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) + //SEG57 [36] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) rts } -//SEG59 init_plot_tables +//SEG58 init_plot_tables init_plot_tables: { - .label _0 = $1e - .label _6 = $1f - .label _7 = $20 - .label _8 = $21 - .label _9 = $22 - .label _10 = $23 + .label _0 = $1d + .label _6 = $1e + .label _7 = $1f + .label _8 = $20 + .label _9 = $21 + .label _10 = $22 .label bits = 4 .label x = 3 .label y = 5 .label yoffs = 6 - //SEG60 [39] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG61 [39] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 + //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuz1=vbuc1 lda #$80 sta bits - //SEG62 [39] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 + //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuz1=vbuc1 lda #0 sta x jmp b1 - //SEG63 [39] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG64 [39] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG65 [39] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG66 init_plot_tables::@1 + //SEG65 init_plot_tables::@1 b1: - //SEG67 [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuz1=vbuz2_band_vbuc1 lda x and #$f8 sta _0 - //SEG68 [41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG67 [40] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _0 ldx x sta plot_xlo,x - //SEG69 [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG68 [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 lda #>BITMAP ldx x sta plot_xhi,x - //SEG70 [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG69 [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda bits ldx x sta plot_bit,x - //SEG71 [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1=vbuz1_ror_1 + //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1=vbuz1_ror_1 lsr bits - //SEG72 [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuz1_neq_0_then_la1 lda bits bne b10_from_b1 - //SEG73 [46] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG74 [46] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 + //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuz1=vbuc1 lda #$80 sta bits jmp b2 - //SEG75 init_plot_tables::@2 + //SEG74 init_plot_tables::@2 b2: - //SEG76 [47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1=_inc_vbuz1 + //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG77 [48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1_neq_0_then_la1 + //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuz1_neq_0_then_la1 lda x bne b1_from_b2 - //SEG78 [49] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG79 [49] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG80 [49] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 + //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuz1=vbuc1 lda #0 sta y jmp b3 - //SEG81 [49] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG82 [49] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG83 [49] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy jmp b3 - //SEG84 init_plot_tables::@3 + //SEG83 init_plot_tables::@3 b3: - //SEG85 [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuz2_band_vbuc1 lda y and #7 sta _6 - //SEG86 [51] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuz1=_lo_pbuz2 + //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuz1=_lo_pbuz2 lda yoffs sta _7 - //SEG87 [52] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuz1=vbuz2_bor_vbuz3 + //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuz1=vbuz2_bor_vbuz3 lda _6 ora _7 sta _8 - //SEG88 [53] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG87 [52] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _8 ldx y sta plot_ylo,x - //SEG89 [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuz1=_hi_pbuz2 + //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuz1=_hi_pbuz2 lda yoffs+1 sta _9 - //SEG90 [55] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG89 [54] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _9 ldx y sta plot_yhi,x - //SEG91 [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuz1=vbuz2_band_vbuc1 lda y and #7 sta _10 - //SEG92 [57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuz1_neq_vbuc1_then_la1 lda _10 cmp #7 bne b4_from_b3 jmp b7 - //SEG93 init_plot_tables::@7 + //SEG92 init_plot_tables::@7 b7: - //SEG94 [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 lda yoffs clc adc #<$28*8 @@ -5897,91 +5827,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG95 [59] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG96 [59] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG97 init_plot_tables::@4 + //SEG96 init_plot_tables::@4 b4: - //SEG98 [60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1=_inc_vbuz1 + //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG99 [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1_neq_0_then_la1 + //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuz1_neq_0_then_la1 lda y bne b3_from_b4 jmp breturn - //SEG100 init_plot_tables::@return + //SEG99 init_plot_tables::@return breturn: - //SEG101 [62] return [ ] ( main:2::init_plot_tables:10 [ ] ) + //SEG100 [61] return [ ] ( main:2::init_plot_tables:10 [ ] ) rts - //SEG102 [63] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG103 init_plot_tables::@10 + //SEG102 init_plot_tables::@10 b10: - //SEG104 [46] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG105 [46] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG106 init_screen +//SEG105 init_screen init_screen: { .label b = 8 .label c = $a - //SEG107 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG108 [65] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG109 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG110 [65] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG111 init_screen::@1 + //SEG110 init_screen::@1 b1: - //SEG112 [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #0 sta (b),y - //SEG113 [67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG114 [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG116 [69] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG117 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG118 [69] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG119 init_screen::@2 + //SEG118 init_screen::@2 b2: - //SEG120 [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #$14 sta (c),y - //SEG121 [71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG122 [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -5989,66 +5919,65 @@ init_screen: { cmp #(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] -Statement [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a +Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) FGCOL#0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) D011#0) ← (const byte) BMM#0|(const byte) DEN#0|(const byte) RSEL#0|(byte/signed byte/word/signed word) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [7] *((const byte*) D018#0) ← ((byte))((word))(const byte*) SCREEN#0/(byte/signed byte/word/signed word) 64|((word))(const byte*) BITMAP#0/(word/signed word) 1024 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [11] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) always clobbers reg byte a -Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a -Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a +Statement [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) always clobbers reg byte a +Statement [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) always clobbers reg byte a +Statement [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) always clobbers reg byte a Statement [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) always clobbers reg byte a -Statement [35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] ) always clobbers reg byte a reg byte y -Statement [36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) always clobbers reg byte y -Statement [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a -Statement [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a -Statement [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a -Statement [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a -Statement [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a -Statement [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a -Statement [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y -Statement [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a -Statement [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y -Statement [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a +Statement [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) always clobbers reg byte a reg byte y +Statement [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) always clobbers reg byte y +Statement [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) always clobbers reg byte a +Statement [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) always clobbers reg byte a +Statement [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) always clobbers reg byte a +Statement [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) always clobbers reg byte a +Statement [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) always clobbers reg byte a +Statement [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) always clobbers reg byte a +Statement [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) always clobbers reg byte a reg byte y +Statement [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) always clobbers reg byte a +Statement [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) always clobbers reg byte a reg byte y +Statement [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -6058,51 +5987,46 @@ Potential registers zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] : zp ZP_W Potential registers zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] : zp ZP_WORD:10 , Potential registers zp ZP_BYTE:12 [ plot::x#0 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:13 [ plot::y#0 ] : zp ZP_BYTE:13 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ plot::$0 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:14 [ plot::$6 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:15 [ plot::plotter_x#1 ] : zp ZP_WORD:15 , -Potential registers zp ZP_BYTE:17 [ plot::$1 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ plot::$7 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:18 [ plot::plotter_x#2 ] : zp ZP_WORD:18 , -Potential registers zp ZP_BYTE:20 [ plot::$2 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ plot::$8 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:21 [ plot::plotter_y#1 ] : zp ZP_WORD:21 , -Potential registers zp ZP_BYTE:23 [ plot::$3 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ plot::$9 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:24 [ plot::plotter_y#2 ] : zp ZP_WORD:24 , Potential registers zp ZP_WORD:26 [ plot::plotter#0 ] : zp ZP_WORD:26 , -Potential registers zp ZP_BYTE:28 [ plot::$5 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:29 [ plot::$6 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ init_plot_tables::$0 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ init_plot_tables::$6 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ init_plot_tables::$7 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:33 [ init_plot_tables::$8 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ init_plot_tables::$9 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ init_plot_tables::$10 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:28 [ plot::$5 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ init_plot_tables::$0 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ init_plot_tables::$6 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:31 [ init_plot_tables::$7 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:32 [ init_plot_tables::$8 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ init_plot_tables::$9 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:34 [ init_plot_tables::$10 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [plots] 252.5: zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] -Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:30 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:32 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:35 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:31 [ init_plot_tables::$6 ] +Uplift Scope [init_plot_tables] 39.11: zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 24.93: zp ZP_BYTE:4 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 23.83: zp ZP_BYTE:3 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 22.5: zp ZP_BYTE:5 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 22: zp ZP_BYTE:29 [ init_plot_tables::$0 ] 22: zp ZP_BYTE:31 [ init_plot_tables::$7 ] 22: zp ZP_BYTE:32 [ init_plot_tables::$8 ] 22: zp ZP_BYTE:33 [ init_plot_tables::$9 ] 22: zp ZP_BYTE:34 [ init_plot_tables::$10 ] 11: zp ZP_BYTE:30 [ init_plot_tables::$6 ] Uplift Scope [init_screen] 33: zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] 33: zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] -Uplift Scope [plot] 15: zp ZP_BYTE:13 [ plot::y#0 ] 9.73: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$0 ] 4: zp ZP_BYTE:17 [ plot::$1 ] 4: zp ZP_BYTE:20 [ plot::$2 ] 4: zp ZP_BYTE:23 [ plot::$3 ] 4: zp ZP_WORD:24 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:28 [ plot::$5 ] 4: zp ZP_BYTE:29 [ plot::$6 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:21 [ plot::plotter_y#1 ] 2: zp ZP_WORD:26 [ plot::plotter#0 ] 0.8: zp ZP_WORD:18 [ plot::plotter_x#2 ] +Uplift Scope [plot] 15: zp ZP_BYTE:13 [ plot::y#0 ] 9.73: zp ZP_BYTE:12 [ plot::x#0 ] 4: zp ZP_BYTE:14 [ plot::$6 ] 4: zp ZP_BYTE:17 [ plot::$7 ] 4: zp ZP_BYTE:20 [ plot::$8 ] 4: zp ZP_BYTE:23 [ plot::$9 ] 4: zp ZP_WORD:24 [ plot::plotter_y#2 ] 4: zp ZP_BYTE:28 [ plot::$5 ] 3: zp ZP_WORD:26 [ plot::plotter#0 ] 2: zp ZP_WORD:15 [ plot::plotter_x#1 ] 2: zp ZP_WORD:21 [ plot::plotter_y#1 ] 0.8: zp ZP_WORD:18 [ plot::plotter_x#2 ] Uplift Scope [main] Uplift Scope [] -Uplifting [plots] best 10585 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] +Uplifting [plots] best 10580 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] Uplift attempts [init_plot_tables] 10000/138240 (limiting to 10000) -Uplifting [init_plot_tables] best 9955 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:35 [ init_plot_tables::$10 ] zp ZP_BYTE:31 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 9950 combination zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] reg byte a [ init_plot_tables::$7 ] reg byte a [ init_plot_tables::$8 ] reg byte a [ init_plot_tables::$9 ] zp ZP_BYTE:34 [ init_plot_tables::$10 ] zp ZP_BYTE:30 [ init_plot_tables::$6 ] Limited combination testing to 10000 combinations of 138240 possible. -Uplifting [init_screen] best 9955 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] -Uplift attempts [plot] 10000/46080 (limiting to 10000) -Uplifting [plot] best 9710 combination reg byte x [ plot::y#0 ] reg byte y [ plot::x#0 ] reg byte a [ plot::$0 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte a [ plot::$3 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_BYTE:29 [ plot::$6 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:18 [ plot::plotter_x#2 ] -Limited combination testing to 10000 combinations of 46080 possible. -Uplifting [main] best 9710 combination -Uplifting [] best 9710 combination +Uplifting [init_screen] best 9950 combination zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] +Uplifting [plot] best 9705 combination reg byte x [ plot::y#0 ] reg byte y [ plot::x#0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp ZP_WORD:24 [ plot::plotter_y#2 ] reg byte a [ plot::$5 ] zp ZP_WORD:26 [ plot::plotter#0 ] zp ZP_WORD:15 [ plot::plotter_x#1 ] zp ZP_WORD:21 [ plot::plotter_y#1 ] zp ZP_WORD:18 [ plot::plotter_x#2 ] +Uplifting [main] best 9705 combination +Uplifting [] best 9705 combination Attempting to uplift remaining variables inzp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] -Uplifting [plots] best 9710 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ init_plot_tables::$10 ] -Uplifting [init_plot_tables] best 9650 combination reg byte a [ init_plot_tables::$10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ init_plot_tables::$6 ] -Uplifting [init_plot_tables] best 9650 combination zp ZP_BYTE:31 [ init_plot_tables::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ plot::$6 ] -Uplifting [plot] best 9644 combination reg byte a [ plot::$6 ] -Coalescing zero page register [ zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] ] with [ zp ZP_BYTE:31 [ init_plot_tables::$6 ] ] +Uplifting [plots] best 9705 combination zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ init_plot_tables::$10 ] +Uplifting [init_plot_tables] best 9645 combination reg byte a [ init_plot_tables::$10 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ init_plot_tables::$6 ] +Uplifting [init_plot_tables] best 9645 combination zp ZP_BYTE:30 [ init_plot_tables::$6 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ plots::i#2 plots::i#1 ] ] with [ zp ZP_BYTE:30 [ init_plot_tables::$6 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp ZP_WORD:8 [ init_screen::b#2 init_screen::b#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ] with [ zp ZP_WORD:10 [ init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 ] ] with [ zp ZP_WORD:15 [ plot::plotter_x#1 ] ] @@ -6165,7 +6089,7 @@ main: { lda #$ff & ($ffff & SCREEN/$40|$ffff & BITMAP/$400) sta D018 //SEG13 [8] call init_screen param-assignment [ ] ( main:2 [ ] ) - //SEG14 [64] phi from main to init_screen [phi:main->init_screen] + //SEG14 [63] phi from main to init_screen [phi:main->init_screen] init_screen_from_main: jsr init_screen //SEG15 [9] phi from main to main::@5 [phi:main->main::@5] @@ -6174,7 +6098,7 @@ main: { //SEG16 main::@5 b5: //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] ) - //SEG18 [38] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] init_plot_tables_from_b5: jsr init_plot_tables jmp b2 @@ -6221,11 +6145,11 @@ plots: { jmp b1 //SEG35 plots::@1 b1: - //SEG36 [19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 ldx i lda plots_x,x tay - //SEG37 [20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 ldx i lda plots_y,x tax @@ -6251,25 +6175,25 @@ plot: { .label plotter_x = 3 .label plotter_y = 5 .label plotter = 3 - //SEG45 [25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG45 [25] (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda plot_xhi,y - //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuaa + //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuaa sta plotter_x+1 lda #<0 sta plotter_x - //SEG47 [27] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG47 [27] (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda plot_xlo,y - //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz1_setlo_vbuaa + //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG49 [29] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG49 [29] (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) -- vbuaa=pbuc1_derefidx_vbuxx lda plot_yhi,x - //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuaa + //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuaa sta plotter_y+1 lda #<0 sta plotter_y - //SEG51 [31] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG51 [31] (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuaa=pbuc1_derefidx_vbuxx lda plot_ylo,x - //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz1_setlo_vbuaa + //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- pbuz1=pbuz1_plus_vwuz2 lda plotter @@ -6279,109 +6203,108 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //SEG54 [34] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy lda plot_bit,y - //SEG55 [35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuaa ldy #0 ora (plotter),y - //SEG56 [36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuaa + //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp breturn - //SEG57 plot::@return + //SEG56 plot::@return breturn: - //SEG58 [37] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) + //SEG57 [36] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) rts } -//SEG59 init_plot_tables +//SEG58 init_plot_tables init_plot_tables: { .label _6 = 2 .label yoffs = 3 - //SEG60 [39] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] b1_from_init_plot_tables: - //SEG61 [39] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG62 [39] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG63 [39] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] b1_from_b2: - //SEG64 [39] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG65 [39] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy jmp b1 - //SEG66 init_plot_tables::@1 + //SEG65 init_plot_tables::@1 b1: - //SEG67 [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG68 [41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG67 [40] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG69 [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG68 [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG70 [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy + //SEG69 [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG71 [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 + //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG72 [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 + //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 cpy #0 bne b10_from_b1 - //SEG73 [46] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] b2_from_b1: - //SEG74 [46] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp b2 - //SEG75 init_plot_tables::@2 + //SEG74 init_plot_tables::@2 b2: - //SEG76 [47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx + //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG77 [48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b2 - //SEG78 [49] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] b3_from_b2: - //SEG79 [49] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs lda #>0 sta yoffs+1 - //SEG80 [49] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG81 [49] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] b3_from_b4: - //SEG82 [49] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG83 [49] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy jmp b3 - //SEG84 init_plot_tables::@3 + //SEG83 init_plot_tables::@3 b3: - //SEG85 [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 + //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG86 [51] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 + //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 lda yoffs - //SEG87 [52] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa + //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG88 [53] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG87 [52] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG89 [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 + //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG90 [55] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG89 [54] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG91 [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG92 [57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4_from_b3 jmp b7 - //SEG93 init_plot_tables::@7 + //SEG92 init_plot_tables::@7 b7: - //SEG94 [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 lda yoffs clc adc #<$28*8 @@ -6389,91 +6312,91 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG95 [59] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] b4_from_b3: b4_from_b7: - //SEG96 [59] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy jmp b4 - //SEG97 init_plot_tables::@4 + //SEG96 init_plot_tables::@4 b4: - //SEG98 [60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx + //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG99 [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b4 jmp breturn - //SEG100 init_plot_tables::@return + //SEG99 init_plot_tables::@return breturn: - //SEG101 [62] return [ ] ( main:2::init_plot_tables:10 [ ] ) + //SEG100 [61] return [ ] ( main:2::init_plot_tables:10 [ ] ) rts - //SEG102 [63] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] b10_from_b1: jmp b10 - //SEG103 init_plot_tables::@10 + //SEG102 init_plot_tables::@10 b10: - //SEG104 [46] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] b2_from_b10: - //SEG105 [46] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy jmp b2 } -//SEG106 init_screen +//SEG105 init_screen init_screen: { .label b = 3 .label c = 3 - //SEG107 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] b1_from_init_screen: - //SEG108 [65] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 jmp b1 - //SEG109 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] b1_from_b1: - //SEG110 [65] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy jmp b1 - //SEG111 init_screen::@1 + //SEG110 init_screen::@1 b1: - //SEG112 [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #0 sta (b),y - //SEG113 [67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG114 [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1_from_b1 lda b cmp #init_screen::@2] + //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] b2_from_b1: - //SEG116 [69] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 jmp b2 - //SEG117 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] b2_from_b2: - //SEG118 [69] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy jmp b2 - //SEG119 init_screen::@2 + //SEG118 init_screen::@2 b2: - //SEG120 [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #$14 sta (c),y - //SEG121 [71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG122 [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2_from_b2 @@ -6481,9 +6404,9 @@ init_screen: { cmp #init_screen] + //SEG14 [63] phi from main to init_screen [phi:main->init_screen] jsr init_screen //SEG15 [9] phi from main to main::@5 [phi:main->main::@5] //SEG16 main::@5 //SEG17 [10] call init_plot_tables param-assignment [ ] ( main:2 [ ] ) - //SEG18 [38] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] + //SEG18 [37] phi from main::@5 to init_plot_tables [phi:main::@5->init_plot_tables] jsr init_plot_tables //SEG19 main::@2 b2: @@ -6792,11 +6713,11 @@ plots: { //SEG34 [18] phi (byte) plots::i#2 = (byte) plots::i#1 [phi:plots::@3->plots::@1#0] -- register_copy //SEG35 plots::@1 b1: - //SEG36 [19] (byte) plot::x#0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG36 [19] (byte) plot::x#0 ← *((const byte[]) plots_x#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 ldx i lda plots_x,x tay - //SEG37 [20] (byte) plot::y#0 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG37 [20] (byte) plot::y#0 ← *((const byte[]) plots_y#0 + (byte) plots::i#2) [ plots::i#2 plot::x#0 plot::y#0 ] ( main:2::plots:13 [ plots::i#2 plot::x#0 plot::y#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 lda plots_y,x tax //SEG38 [21] call plot param-assignment [ plots::i#2 ] ( main:2::plots:13 [ plots::i#2 ] ) @@ -6817,25 +6738,25 @@ plot: { .label plotter_x = 3 .label plotter_y = 5 .label plotter = 3 - //SEG45 [25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG45 [25] (byte~) plot::$6 ← *((const byte[]) plot_xhi#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$6 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda plot_xhi,y - //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuaa + //SEG46 [26] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word) 0 hi= (byte~) plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] ) -- pbuz1=pbuc1_sethi_vbuaa sta plotter_x+1 lda #<0 sta plotter_x - //SEG47 [27] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG47 [27] (byte~) plot::$7 ← *((const byte[]) plot_xlo#0 + (byte) plot::x#0) [ plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda plot_xlo,y - //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz1_setlo_vbuaa + //SEG48 [28] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] ) -- pbuz1=pbuz1_setlo_vbuaa sta plotter_x - //SEG49 [29] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#0 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG49 [29] (byte~) plot::$8 ← *((const byte[]) plot_yhi#0 + (byte) plot::y#0) [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$8 ] ) -- vbuaa=pbuc1_derefidx_vbuxx lda plot_yhi,x - //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuaa + //SEG50 [30] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word) 0 hi= (byte~) plot::$8 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ) -- vwuz1=vbuc1_sethi_vbuaa sta plotter_y+1 lda #<0 sta plotter_y - //SEG51 [31] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#0 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG51 [31] (byte~) plot::$9 ← *((const byte[]) plot_ylo#0 + (byte) plot::y#0) [ plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$9 ] ) -- vbuaa=pbuc1_derefidx_vbuxx lda plot_ylo,x - //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz1_setlo_vbuaa + //SEG52 [32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ) -- vwuz1=vwuz1_setlo_vbuaa sta plotter_y //SEG53 [33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::x#0 plot::plotter#0 ] ) -- pbuz1=pbuz1_plus_vwuz2 lda plotter @@ -6845,93 +6766,92 @@ plot: { lda plotter+1 adc plotter_y+1 sta plotter+1 - //SEG54 [34] (byte~) plot::$5 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG54 [34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[]) plot_bit#0 + (byte) plot::x#0) [ plot::plotter#0 plot::$5 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$5 ] ) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuyy lda plot_bit,y - //SEG55 [35] (byte~) plot::$6 ← *((byte*) plot::plotter#0) | (byte~) plot::$5 [ plot::plotter#0 plot::$6 ] ( main:2::plots:13::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuaa ldy #0 ora (plotter),y - //SEG56 [36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuaa + //SEG55 [35] *((byte*) plot::plotter#0) ← (byte~) plot::$5 [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) -- _deref_pbuz1=vbuaa sta (plotter),y - //SEG57 plot::@return - //SEG58 [37] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) + //SEG56 plot::@return + //SEG57 [36] return [ ] ( main:2::plots:13::plot:21 [ plots::i#2 ] ) rts } -//SEG59 init_plot_tables +//SEG58 init_plot_tables init_plot_tables: { .label _6 = 2 .label yoffs = 3 - //SEG60 [39] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] - //SEG61 [39] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 + //SEG59 [38] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1] + //SEG60 [38] phi (byte) init_plot_tables::bits#3 = (byte/word/signed word) 128 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1 ldy #$80 - //SEG62 [39] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 + //SEG61 [38] phi (byte) init_plot_tables::x#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables->init_plot_tables::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG63 [39] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] - //SEG64 [39] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy - //SEG65 [39] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy - //SEG66 init_plot_tables::@1 + //SEG62 [38] phi from init_plot_tables::@2 to init_plot_tables::@1 [phi:init_plot_tables::@2->init_plot_tables::@1] + //SEG63 [38] phi (byte) init_plot_tables::bits#3 = (byte) init_plot_tables::bits#4 [phi:init_plot_tables::@2->init_plot_tables::@1#0] -- register_copy + //SEG64 [38] phi (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#1 [phi:init_plot_tables::@2->init_plot_tables::@1#1] -- register_copy + //SEG65 init_plot_tables::@1 b1: - //SEG67 [40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG66 [39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 - //SEG68 [41] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG67 [40] *((const byte[]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_xlo,x - //SEG69 [42] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG68 [41] *((const byte[]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta plot_xhi,x - //SEG70 [43] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy + //SEG69 [42] *((const byte[]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ) -- pbuc1_derefidx_vbuxx=vbuyy tya sta plot_bit,x - //SEG71 [44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 + //SEG70 [43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy=vbuyy_ror_1 tya lsr tay - //SEG72 [45] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 + //SEG71 [44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ) -- vbuyy_neq_0_then_la1 cpy #0 bne b2 - //SEG73 [46] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] - //SEG74 [46] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 + //SEG72 [45] phi from init_plot_tables::@1 to init_plot_tables::@2 [phi:init_plot_tables::@1->init_plot_tables::@2] + //SEG73 [45] phi (byte) init_plot_tables::bits#4 = (byte/word/signed word) 128 [phi:init_plot_tables::@1->init_plot_tables::@2#0] -- vbuyy=vbuc1 ldy #$80 - //SEG75 init_plot_tables::@2 + //SEG74 init_plot_tables::@2 b2: - //SEG76 [47] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx + //SEG75 [46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG77 [48] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG76 [47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG78 [49] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] - //SEG79 [49] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 + //SEG77 [48] phi from init_plot_tables::@2 to init_plot_tables::@3 [phi:init_plot_tables::@2->init_plot_tables::@3] + //SEG78 [48] phi (byte*) init_plot_tables::yoffs#2 = ((byte*))(byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#0] -- pbuz1=pbuc1 lda #<0 sta yoffs sta yoffs+1 - //SEG80 [49] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 + //SEG79 [48] phi (byte) init_plot_tables::y#2 = (byte/signed byte/word/signed word) 0 [phi:init_plot_tables::@2->init_plot_tables::@3#1] -- vbuxx=vbuc1 tax - //SEG81 [49] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] - //SEG82 [49] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy - //SEG83 [49] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy - //SEG84 init_plot_tables::@3 + //SEG80 [48] phi from init_plot_tables::@4 to init_plot_tables::@3 [phi:init_plot_tables::@4->init_plot_tables::@3] + //SEG81 [48] phi (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#4 [phi:init_plot_tables::@4->init_plot_tables::@3#0] -- register_copy + //SEG82 [48] phi (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#1 [phi:init_plot_tables::@4->init_plot_tables::@3#1] -- register_copy + //SEG83 init_plot_tables::@3 b3: - //SEG85 [50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 + //SEG84 [49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ) -- vbuz1=vbuxx_band_vbuc1 txa and #7 sta _6 - //SEG86 [51] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 + //SEG85 [50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] ) -- vbuaa=_lo_pbuz1 lda yoffs - //SEG87 [52] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa + //SEG86 [51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] ) -- vbuaa=vbuz1_bor_vbuaa ora _6 - //SEG88 [53] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG87 [52] *((const byte[]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_ylo,x - //SEG89 [54] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 + //SEG88 [53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] ) -- vbuaa=_hi_pbuz1 lda yoffs+1 - //SEG90 [55] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG89 [54] *((const byte[]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta plot_yhi,x - //SEG91 [56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG90 [55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #7 - //SEG92 [57] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG91 [56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #7 bne b4 - //SEG93 init_plot_tables::@7 - //SEG94 [58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 + //SEG92 init_plot_tables::@7 + //SEG93 [57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ) -- pbuz1=pbuz1_plus_vwuc1 lda yoffs clc adc #<$28*8 @@ -6939,81 +6859,81 @@ init_plot_tables: { lda yoffs+1 adc #>$28*8 sta yoffs+1 - //SEG95 [59] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] - //SEG96 [59] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy - //SEG97 init_plot_tables::@4 + //SEG94 [58] phi from init_plot_tables::@3 init_plot_tables::@7 to init_plot_tables::@4 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4] + //SEG95 [58] phi (byte*) init_plot_tables::yoffs#4 = (byte*) init_plot_tables::yoffs#2 [phi:init_plot_tables::@3/init_plot_tables::@7->init_plot_tables::@4#0] -- register_copy + //SEG96 init_plot_tables::@4 b4: - //SEG98 [60] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx + //SEG97 [59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG99 [61] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 + //SEG98 [60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:2::init_plot_tables:10 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG100 init_plot_tables::@return - //SEG101 [62] return [ ] ( main:2::init_plot_tables:10 [ ] ) + //SEG99 init_plot_tables::@return + //SEG100 [61] return [ ] ( main:2::init_plot_tables:10 [ ] ) rts - //SEG102 [63] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] - //SEG103 init_plot_tables::@10 - //SEG104 [46] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] - //SEG105 [46] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy + //SEG101 [62] phi from init_plot_tables::@1 to init_plot_tables::@10 [phi:init_plot_tables::@1->init_plot_tables::@10] + //SEG102 init_plot_tables::@10 + //SEG103 [45] phi from init_plot_tables::@10 to init_plot_tables::@2 [phi:init_plot_tables::@10->init_plot_tables::@2] + //SEG104 [45] phi (byte) init_plot_tables::bits#4 = (byte) init_plot_tables::bits#1 [phi:init_plot_tables::@10->init_plot_tables::@2#0] -- register_copy } -//SEG106 init_screen +//SEG105 init_screen init_screen: { .label b = 3 .label c = 3 - //SEG107 [65] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] - //SEG108 [65] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 + //SEG106 [64] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] + //SEG107 [64] phi (byte*) init_screen::b#2 = (const byte*) BITMAP#0 [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #BITMAP sta b+1 - //SEG109 [65] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] - //SEG110 [65] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy - //SEG111 init_screen::@1 + //SEG108 [64] phi from init_screen::@1 to init_screen::@1 [phi:init_screen::@1->init_screen::@1] + //SEG109 [64] phi (byte*) init_screen::b#2 = (byte*) init_screen::b#1 [phi:init_screen::@1->init_screen::@1#0] -- register_copy + //SEG110 init_screen::@1 b1: - //SEG112 [66] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG111 [65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word) 0 [ init_screen::b#2 ] ( main:2::init_screen:8 [ init_screen::b#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 tya sta (b),y - //SEG113 [67] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG112 [66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1=_inc_pbuz1 inc b bne !+ inc b+1 !: - //SEG114 [68] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG113 [67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:2::init_screen:8 [ init_screen::b#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda b+1 cmp #>BITMAP+$2000 bne b1 lda b cmp #init_screen::@2] - //SEG116 [69] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 + //SEG114 [68] phi from init_screen::@1 to init_screen::@2 [phi:init_screen::@1->init_screen::@2] + //SEG115 [68] phi (byte*) init_screen::c#2 = (const byte*) SCREEN#0 [phi:init_screen::@1->init_screen::@2#0] -- pbuz1=pbuc1 lda #SCREEN sta c+1 - //SEG117 [69] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] - //SEG118 [69] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy - //SEG119 init_screen::@2 + //SEG116 [68] phi from init_screen::@2 to init_screen::@2 [phi:init_screen::@2->init_screen::@2] + //SEG117 [68] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@2#0] -- register_copy + //SEG118 init_screen::@2 b2: - //SEG120 [70] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG119 [69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word) 20 [ init_screen::c#2 ] ( main:2::init_screen:8 [ init_screen::c#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #$14 sta (c),y - //SEG121 [71] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG120 [70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1=_inc_pbuz1 inc c bne !+ inc c+1 !: - //SEG122 [72] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 + //SEG121 [71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:2::init_screen:8 [ init_screen::c#1 ] ) -- pbuz1_neq_pbuc1_then_la1 lda c+1 cmp #>SCREEN+$400 bne b2 lda c cmp #main::@4] b4_from_b2: @@ -1918,7 +1905,7 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ main::x#2 main::x#1 ] @@ -1929,8 +1916,8 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ ma Statement [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:2 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a Statement [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) always clobbers reg byte a -Statement [9] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) always clobbers reg byte a +Statement [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) always clobbers reg byte a +Statement [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) always clobbers reg byte a Statement [13] *((byte*) main::sc#3) ← (byte) main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) always clobbers reg byte y Statement [18] (byte*) main::sc#2 ← (byte*) main::sc#1 + (byte/signed byte/word/signed word) 32 [ main::y#2 main::sc#2 ] ( main:2 [ main::y#2 main::sc#2 ] ) always clobbers reg byte a Statement [21] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -1939,13 +1926,13 @@ Potential registers zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] : zp Potential registers zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ main::x#2 main::x#1 ] : zp ZP_BYTE:6 , reg byte x , Potential registers zp ZP_BYTE:7 [ main::c#2 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:8 [ main::$2 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ main::$1 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 202: zp ZP_BYTE:8 [ main::$2 ] 176.75: zp ZP_BYTE:6 [ main::x#2 main::x#1 ] 134.19: zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] 123.92: zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] 101: zp ZP_BYTE:7 [ main::c#2 ] 19.04: zp ZP_BYTE:2 [ main::y#2 main::y#1 ] +Uplift Scope [main] 202: zp ZP_BYTE:8 [ main::$1 ] 176.75: zp ZP_BYTE:6 [ main::x#2 main::x#1 ] 134.19: zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] 123.92: zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] 101: zp ZP_BYTE:7 [ main::c#2 ] 19.04: zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Uplift Scope [] -Uplifting [main] best 7352 combination reg byte a [ main::$2 ] reg byte x [ main::x#2 main::x#1 ] zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp ZP_BYTE:2 [ main::y#2 main::y#1 ] +Uplifting [main] best 7352 combination reg byte a [ main::$1 ] reg byte x [ main::x#2 main::x#1 ] zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp ZP_BYTE:2 [ main::y#2 main::y#1 ] Uplifting [] best 7352 combination Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] Uplifting [main] best 7352 combination zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] @@ -2004,7 +1991,7 @@ main: { jmp b1 //SEG17 main::@1 b1: - //SEG18 [7] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG18 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx y lda CHAR_A,x sta bits @@ -2023,10 +2010,10 @@ main: { jmp b2 //SEG27 main::@2 b2: - //SEG28 [9] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 + //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 lda bits and #$80 - //SEG29 [10] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- vbuaa_eq_0_then_la1 + //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG30 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] @@ -2140,7 +2127,7 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() -(byte~) main::$2 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -2173,7 +2160,7 @@ zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte x [ main::x#2 main::x#1 ] reg byte a [ main::c#2 ] -reg byte a [ main::$2 ] +reg byte a [ main::$1 ] FINAL CODE //SEG0 Basic Upstart @@ -2216,7 +2203,7 @@ main: { //SEG16 [6] phi (byte) main::y#2 = (byte) main::y#1 [phi:main::@5->main::@1#1] -- register_copy //SEG17 main::@1 b1: - //SEG18 [7] (byte) main::bits#0 ← (const byte*) main::CHAR_A#0 *idx (byte) main::y#2 [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG18 [7] (byte) main::bits#0 ← *((const byte*) main::CHAR_A#0 + (byte) main::y#2) [ main::y#2 main::sc#7 main::bits#0 ] ( main:2 [ main::y#2 main::sc#7 main::bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx y lda CHAR_A,x sta bits @@ -2231,10 +2218,10 @@ main: { //SEG26 [8] phi (byte) main::bits#2 = (byte) main::bits#1 [phi:main::@3->main::@2#2] -- register_copy //SEG27 main::@2 b2: - //SEG28 [9] (byte~) main::$2 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 + //SEG28 [9] (byte~) main::$1 ← (byte) main::bits#2 & (byte/word/signed word) 128 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 main::$1 ] ) -- vbuaa=vbuz1_band_vbuc1 lda bits and #$80 - //SEG29 [10] if((byte~) main::$2==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- vbuaa_eq_0_then_la1 + //SEG29 [10] if((byte~) main::$1==(byte/signed byte/word/signed word) 0) goto main::@3 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( main:2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b4 //SEG30 [11] phi from main::@2 to main::@4 [phi:main::@2->main::@4] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym b/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym index bbffbc492..3f9ec5bdd 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/chargen.sym @@ -8,7 +8,7 @@ (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() -(byte~) main::$2 reg byte a 202.0 +(byte~) main::$1 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -41,4 +41,4 @@ zp ZP_BYTE:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp ZP_WORD:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte x [ main::x#2 main::x#1 ] reg byte a [ main::c#2 ] -reg byte a [ main::$2 ] +reg byte a [ main::$1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg index 7155d4451..fc2e2657a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.cfg @@ -48,11 +48,10 @@ line::@1: scope:[line] from line to:line::@return plot: scope:[plot] from line::@1 line::@2 [23] (byte) plot::x#2 ← phi( line::@1/(const byte) line::x0#0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::x#2 ] main:2::line:11::plot:22 [ plot::x#2 ] ) - [24] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) - [25] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$1 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$1 ] ) - [26] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$2 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$2 ] ) - [27] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + [24] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) + [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) + [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) to:plot::@return plot::@return: scope:[plot] from plot - [28] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + [27] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log index 1e0b86a0f..85ff81cc0 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.log @@ -62,11 +62,9 @@ line::@return: return endproc // line() proc (void()) plot((byte) plot::x) - (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x - (byte) plot::idx ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 + (byte) plot::idx ← *((byte[]) plots + (byte) plot::x) + (byte~) plot::$0 ← *((byte*) SCREEN + (byte) plot::idx) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$0 plot::@return: return endproc // plot() @@ -96,8 +94,6 @@ SYMBOLS (byte) main::i (void()) plot((byte) plot::x) (byte~) plot::$0 -(byte~) plot::$1 -(byte~) plot::$2 (label) plot::@return (byte) plot::idx (byte) plot::x @@ -162,11 +158,9 @@ line::@return: scope:[line] from line::@3 @2: scope:[] from @1 to:@3 plot: scope:[plot] from - (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x - (byte) plot::idx ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 + (byte) plot::idx ← *((byte[]) plots + (byte) plot::x) + (byte~) plot::$0 ← *((byte*) SCREEN + (byte) plot::idx) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -229,11 +223,9 @@ line::@return: scope:[line] from line::@1 line::@2 return to:@return plot: scope:[plot] from - (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x - (byte) plot::idx ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 + (byte) plot::idx ← *((byte[]) plots + (byte) plot::x) + (byte~) plot::$0 ← *((byte*) SCREEN + (byte) plot::idx) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -298,11 +290,9 @@ line::@return: scope:[line] from line::@7 line::@8 return to:@return plot: scope:[plot] from line::@1 line::@2 - (byte~) plot::$0 ← (byte[]) plots *idx (byte) plot::x - (byte) plot::idx ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN *idx (byte) plot::idx - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$2 + (byte) plot::idx ← *((byte[]) plots + (byte) plot::x) + (byte~) plot::$0 ← *((byte*) SCREEN + (byte) plot::idx) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN + (byte) plot::idx) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -381,11 +371,9 @@ line::@return: scope:[line] from line::@7 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte~) plot::$0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte) plot::idx#0 ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -461,11 +449,9 @@ line::@return: scope:[line] from line::@7 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte~) plot::$0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte) plot::idx#0 ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -522,8 +508,6 @@ INITIAL SSA SYMBOL TABLE (byte) main::i#2 (void()) plot((byte) plot::x) (byte~) plot::$0 -(byte~) plot::$1 -(byte~) plot::$2 (label) plot::@return (byte) plot::idx (byte) plot::idx#0 @@ -599,11 +583,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte~) plot::$0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte) plot::idx#0 ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -676,11 +658,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte~) plot::$0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte) plot::idx#0 ← (byte~) plot::$0 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -699,7 +679,6 @@ Alias (byte) line::x0#1 = (byte) line::x0#2 (byte) line::x0#3 (byte) line::x#0 Alias (byte) line::x1#1 = (byte) line::x1#4 Alias (byte) line::x#2 = (byte) line::x#3 Alias (byte) line::x1#2 = (byte) line::x1#3 -Alias (byte) plot::idx#0 = (byte~) plot::$0 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -756,10 +735,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -831,10 +809,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -900,10 +877,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -966,10 +942,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1029,10 +1004,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1087,10 +1061,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(const byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1145,10 +1118,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(const byte) plot::x#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1212,10 +1184,9 @@ line::@return: scope:[line] from line::@1 line::@8 to:@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(const byte) line::x0#0 line::@2/(byte) plot::x#1 ) - (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1252,8 +1223,7 @@ FINAL SYMBOL TABLE (byte) main::i#1 (byte) main::i#2 (void()) plot((byte) plot::x) -(byte~) plot::$1 -(byte~) plot::$2 +(byte~) plot::$0 (label) plot::@return (byte) plot::idx (byte) plot::idx#0 @@ -1319,10 +1289,9 @@ line::@1: scope:[line] from line to:line::@return plot: scope:[plot] from line::@1 line::@2 (byte) plot::x#2 ← phi( line::@1/(const byte) line::x0#0 line::@2/(byte~) plot::x#3 ) - (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 - (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 - (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 - *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 + (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) + (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 + *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 to:plot::@return plot::@return: scope:[plot] from plot return @@ -1401,13 +1370,12 @@ line::@1: scope:[line] from line to:line::@return plot: scope:[plot] from line::@1 line::@2 [26] (byte) plot::x#2 ← phi( line::@1/(const byte) line::x0#0 line::@2/(byte~) plot::x#3 ) [ plot::x#2 ] - [27] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] - [28] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] - [29] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] - [30] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] + [27] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] + [28] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] + [29] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [31] return [ ] + [30] return [ ] to:@return Created 3 initial phi equivalence classes @@ -1478,13 +1446,12 @@ line::@1: scope:[line] from line to:line::@return plot: scope:[plot] from line::@1 line::@2 [23] (byte) plot::x#2 ← phi( line::@1/(const byte) line::x0#0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] - [24] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] - [25] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] - [26] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] - [27] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] + [24] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] + [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] + [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] to:plot::@return plot::@return: scope:[plot] from plot - [28] return [ ] + [27] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -1538,13 +1505,12 @@ line::@1: scope:[line] from line to:line::@return plot: scope:[plot] from line::@1 line::@2 [23] (byte) plot::x#2 ← phi( line::@1/(const byte) line::x0#0 line::@2/(byte) plot::x#1 ) [ plot::x#2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::x#2 ] main:2::line:11::plot:22 [ plot::x#2 ] ) - [24] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) - [25] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$1 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$1 ] ) - [26] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$2 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$2 ] ) - [27] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + [24] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) + [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) + [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) to:plot::@return plot::@return: scope:[plot] from plot - [28] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + [27] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) to:@return DOMINATORS @@ -1601,10 +1567,9 @@ VARIABLE REGISTER WEIGHTS (byte) main::i#1 16.5 (byte) main::i#2 18.333333333333332 (void()) plot((byte) plot::x) -(byte~) plot::$1 4.0 -(byte~) plot::$2 4.0 +(byte~) plot::$0 4.0 (byte) plot::idx -(byte) plot::idx#0 2.0 +(byte) plot::idx#0 3.0 (byte) plot::x (byte) plot::x#1 202.0 (byte) plot::x#2 103.0 @@ -1615,21 +1580,18 @@ Initial phi equivalence classes [ line::x#2 line::x#1 ] [ plot::x#2 plot::x#1 ] Added variable plot::idx#0 to zero page equivalence class [ plot::idx#0 ] -Added variable plot::$1 to zero page equivalence class [ plot::$1 ] -Added variable plot::$2 to zero page equivalence class [ plot::$2 ] +Added variable plot::$0 to zero page equivalence class [ plot::$0 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ line::x#2 line::x#1 ] [ plot::x#2 plot::x#1 ] [ plot::idx#0 ] -[ plot::$1 ] -[ plot::$2 ] +[ plot::$0 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ line::x#2 line::x#1 ] Allocated zp ZP_BYTE:4 [ plot::x#2 plot::x#1 ] Allocated zp ZP_BYTE:5 [ plot::idx#0 ] -Allocated zp ZP_BYTE:6 [ plot::$1 ] -Allocated zp ZP_BYTE:7 [ plot::$2 ] +Allocated zp ZP_BYTE:6 [ plot::$0 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -1762,56 +1724,54 @@ line: { } //SEG47 plot plot: { - .label _1 = 6 - .label _2 = 7 + .label _0 = 6 .label x = 4 .label idx = 5 - //SEG48 [24] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG48 [24] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx x lda plots,x sta idx - //SEG49 [25] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$1 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG49 [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_plus_1 ldx idx lda SCREEN,x - sta _1 - //SEG50 [26] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$2 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$2 ] ) -- vbuz1=vbuz2_plus_1 - lda _1 clc adc #1 - sta _2 - //SEG51 [27] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _2 + sta _0 + //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda _0 ldx idx sta SCREEN,x jmp breturn - //SEG52 plot::@return + //SEG51 plot::@return breturn: - //SEG53 [28] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + //SEG52 [27] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:6 [ plot::$1 ] has ALU potential. Statement [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Statement [14] if((const byte) line::x0#0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:2::line:11 [ ] ) always clobbers reg byte a +Statement [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ line::x#2 line::x#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plot::idx#0 ] Statement [6] *((const byte[]) plots#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Statement [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte/signed byte/word/signed word) 0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Statement [14] if((const byte) line::x0#0>=(const byte) line::x1#0) goto line::@1 [ ] ( main:2::line:11 [ ] ) always clobbers reg byte a +Statement [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ line::x#2 line::x#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ line::x#2 line::x#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ plot::x#2 plot::x#1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:5 [ plot::idx#0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:6 [ plot::$1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:7 [ plot::$2 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:5 [ plot::idx#0 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ plot::$0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [plot] 305: zp ZP_BYTE:4 [ plot::x#2 plot::x#1 ] 4: zp ZP_BYTE:6 [ plot::$1 ] 4: zp ZP_BYTE:7 [ plot::$2 ] 2: zp ZP_BYTE:5 [ plot::idx#0 ] +Uplift Scope [plot] 305: zp ZP_BYTE:4 [ plot::x#2 plot::x#1 ] 4: zp ZP_BYTE:6 [ plot::$0 ] 3: zp ZP_BYTE:5 [ plot::idx#0 ] Uplift Scope [line] 252.5: zp ZP_BYTE:3 [ line::x#2 line::x#1 ] Uplift Scope [main] 34.83: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [plot] best 3894 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte a [ plot::$1 ] reg byte a [ plot::$2 ] reg byte x [ plot::idx#0 ] +Uplifting [plot] best 3894 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte a [ plot::$0 ] reg byte x [ plot::idx#0 ] Uplifting [line] best 3894 combination zp ZP_BYTE:3 [ line::x#2 line::x#1 ] Uplifting [main] best 3744 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 3744 combination @@ -1944,19 +1904,18 @@ line: { } //SEG47 plot plot: { - //SEG48 [24] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuyy + //SEG48 [24] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuyy ldx plots,y - //SEG49 [25] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$1 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG49 [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 lda SCREEN,x - //SEG50 [26] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$2 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$2 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG51 [27] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x jmp breturn - //SEG52 plot::@return + //SEG51 plot::@return breturn: - //SEG53 [28] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + //SEG52 [27] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) rts } @@ -2034,11 +1993,10 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 18.333333333333332 (void()) plot((byte) plot::x) -(byte~) plot::$1 reg byte a 4.0 -(byte~) plot::$2 reg byte a 4.0 +(byte~) plot::$0 reg byte a 4.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte x 2.0 +(byte) plot::idx#0 reg byte x 3.0 (byte) plot::x (byte) plot::x#1 reg byte y 202.0 (byte) plot::x#2 reg byte y 103.0 @@ -2049,8 +2007,7 @@ reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ] reg byte y [ plot::x#2 plot::x#1 ] reg byte x [ plot::idx#0 ] -reg byte a [ plot::$1 ] -reg byte a [ plot::$2 ] +reg byte a [ plot::$0 ] FINAL CODE //SEG0 Basic Upstart @@ -2145,17 +2102,16 @@ line: { } //SEG47 plot plot: { - //SEG48 [24] (byte) plot::idx#0 ← (const byte[]) plots#0 *idx (byte) plot::x#2 [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuyy + //SEG48 [24] (byte) plot::idx#0 ← *((const byte[]) plots#0 + (byte) plot::x#2) [ plot::idx#0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 ] main:2::line:11::plot:22 [ plot::idx#0 ] ) -- vbuxx=pbuc1_derefidx_vbuyy ldx plots,y - //SEG49 [25] (byte~) plot::$1 ← (const byte*) SCREEN#0 *idx (byte) plot::idx#0 [ plot::idx#0 plot::$1 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$1 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG49 [25] (byte~) plot::$0 ← *((const byte*) SCREEN#0 + (byte) plot::idx#0) + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$0 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$0 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_1 lda SCREEN,x - //SEG50 [26] (byte~) plot::$2 ← (byte~) plot::$1 + (byte/signed byte/word/signed word) 1 [ plot::idx#0 plot::$2 ] ( main:2::line:11::plot:17 [ line::x#2 plot::idx#0 plot::$2 ] main:2::line:11::plot:22 [ plot::idx#0 plot::$2 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG51 [27] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$2 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG50 [26] *((const byte*) SCREEN#0 + (byte) plot::idx#0) ← (byte~) plot::$0 [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG52 plot::@return - //SEG53 [28] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) + //SEG51 plot::@return + //SEG52 [27] return [ ] ( main:2::line:11::plot:17 [ line::x#2 ] main:2::line:11::plot:22 [ ] ) rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym index c3f86dd60..fd4de1c94 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/const-identification.sym @@ -24,11 +24,10 @@ (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 18.333333333333332 (void()) plot((byte) plot::x) -(byte~) plot::$1 reg byte a 4.0 -(byte~) plot::$2 reg byte a 4.0 +(byte~) plot::$0 reg byte a 4.0 (label) plot::@return (byte) plot::idx -(byte) plot::idx#0 reg byte x 2.0 +(byte) plot::idx#0 reg byte x 3.0 (byte) plot::x (byte) plot::x#1 reg byte y 202.0 (byte) plot::x#2 reg byte y 103.0 @@ -39,5 +38,4 @@ reg byte x [ main::i#2 main::i#1 ] zp ZP_BYTE:2 [ line::x#2 line::x#1 ] reg byte y [ plot::x#2 plot::x#1 ] reg byte x [ plot::idx#0 ] -reg byte a [ plot::$1 ] -reg byte a [ plot::$2 ] +reg byte a [ plot::$0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constants.asm b/src/main/java/dk/camelot64/kickc/test/ref/constants.asm new file mode 100644 index 000000000..58dca130d --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/constants.asm @@ -0,0 +1,259 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const BGCOL = $d021 + .const GREEN = 5 + .const RED = 2 + .label char_cursor = 2 + .label line_cursor = 7 + jsr main +main: { + jsr print_cls + lda #GREEN + sta BGCOL + jsr test_bytes + jsr test_sbytes + rts +} +test_sbytes: { + .const bb = 0 + .const bc = bb+2 + .const bf = -$7f-$7f + .const bd = bc-4 + .const be = -bd + lda #0 + sta assert_sbyte.c + lda #bb + tax + lda #msg + sta assert_sbyte.msg+1 + jsr assert_sbyte + lda #2 + sta assert_sbyte.c + lda #bc + tax + lda #msg1 + sta assert_sbyte.msg+1 + jsr assert_sbyte + lda #-2 + sta assert_sbyte.c + lda #bd + tax + lda #msg2 + sta assert_sbyte.msg+1 + jsr assert_sbyte + lda #2 + sta assert_sbyte.c + lda #be + tax + lda #msg3 + sta assert_sbyte.msg+1 + jsr assert_sbyte + lda #2 + sta assert_sbyte.c + lda #bf + tax + lda #msg4 + sta assert_sbyte.msg+1 + jsr assert_sbyte + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=-2@" + msg3: .text "-(0+2-4)=2@" + msg4: .text "-127-127=2@" +} +assert_sbyte: { + .label msg = 2 + .label c = 4 + lda msg + sta print_str.str + lda msg+1 + sta print_str.str+1 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + jsr print_str + lda #str + sta print_str.str+1 + jsr print_str + cpx c + beq b1 + lda #RED + sta BGCOL + lda #str2 + sta print_str.str+1 + jsr print_str + b2: + jsr print_ln + rts + b1: + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +print_str: { + .label str = 5 + b1: + ldy #0 + lda (str),y + cmp #'@' + bne b2 + rts + b2: + ldy #0 + lda (str),y + sta (char_cursor),y + inc char_cursor + bne !+ + inc char_cursor+1 + !: + inc str + bne !+ + inc str+1 + !: + jmp b1 +} +print_ln: { + b1: + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + lda line_cursor+1 + cmp char_cursor+1 + bcc b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1 + !: + rts +} +test_bytes: { + .const bb = 0 + .const bc = bb+2 + .const bd = bc-4 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + lda #0 + sta assert_byte.c + ldx #bb + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + lda #msg + sta assert_byte.msg+1 + jsr assert_byte + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + lda #2 + sta assert_byte.c + ldx #bc + lda #msg1 + sta assert_byte.msg+1 + jsr assert_byte + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + lda #$fe + sta assert_byte.c + ldx #bd + lda #msg2 + sta assert_byte.msg+1 + jsr assert_byte + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=254@" +} +assert_byte: { + .label msg = 5 + .label c = 4 + jsr print_str + lda #str + sta print_str.str+1 + jsr print_str + cpx c + beq b1 + lda #RED + sta BGCOL + lda #str2 + sta print_str.str+1 + jsr print_str + b2: + jsr print_ln + rts + b1: + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +print_cls: { + .label sc = 2 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + b1: + ldy #0 + lda #' ' + sta (sc),y + inc sc + bne !+ + inc sc+1 + !: + lda sc+1 + cmp #>$400+$3e8 + bne b1 + lda sc + cmp #<$400+$3e8 + bne b1 + rts +} diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constants.cfg b/src/main/java/dk/camelot64/kickc/test/ref/constants.cfg new file mode 100644 index 000000000..30d19d238 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/constants.cfg @@ -0,0 +1,163 @@ +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@11 +@11: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @11 + [3] phi() [ ] ( ) +main: scope:[main] from @11 + [4] phi() [ ] ( main:2 [ ] ) + [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main + [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) + [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + [9] call test_sbytes param-assignment [ ] ( main:2 [ ] ) + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return [ ] ( main:2 [ ] ) + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + [11] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + [13] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + [15] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + [17] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + [19] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] ) + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + [21] return [ ] ( main:2::test_sbytes:9 [ ] ) + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word) 0 test_sbytes::@1/(byte/signed byte/word/signed word) 2 test_sbytes::@2/-(byte/signed byte/word/signed word) 2 test_sbytes::@3/(byte/signed byte/word/signed word) 2 test_sbytes::@4/(byte/signed byte/word/signed word) 2 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ) + [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ) + [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte[]) test_sbytes::msg test_sbytes::@1/(const byte[]) test_sbytes::msg1 test_sbytes::@2/(const byte[]) test_sbytes::msg2 test_sbytes::@3/(const byte[]) test_sbytes::msg3 test_sbytes::@4/(const byte[]) test_sbytes::msg4 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ) + [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) + [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) + [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + [26] phi() [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@3 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + [31] phi() [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + [33] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + to:@return +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + [34] phi() [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@2 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + [36] (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*~) char_cursor#82 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) [ print_str::str#11 char_cursor#75 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] ) + [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte[]) assert_byte::str1 assert_byte::@3/(const byte[]) assert_byte::str2 assert_byte::@5/(const byte[]) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte[]) assert_sbyte::str1 assert_sbyte::@3/(const byte[]) assert_sbyte::str2 assert_sbyte::@5/(const byte[]) assert_sbyte::str ) [ print_str::str#11 char_cursor#75 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + [37] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + [37] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + [39] return [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] ) + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) + [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) + to:print_str::@1 +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + [43] (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#42 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ char_cursor#2 line_cursor#42 ] ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + [44] (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#21 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ char_cursor#2 line_cursor#21 ] ) + [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) + [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + [47] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] ) + to:@return +test_bytes: scope:[test_bytes] from main::@1 + [48] phi() [ ] ( main:2::test_bytes:7 [ ] ) + [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) + [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) + [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + [54] return [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + [55] (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word) 0 test_bytes::@1/(byte/signed byte/word/signed word) 2 test_bytes::@2/(byte/word/signed word) 254 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) char_cursor#88 test_bytes::@2/(byte*~) char_cursor#89 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte[]) test_bytes::msg test_bytes::@1/(const byte[]) test_bytes::msg1 test_bytes::@2/(const byte[]) test_bytes::msg2 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + [58] phi() [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + to:assert_byte::@3 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + [63] phi() [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + [65] return [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + to:@return +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + [66] phi() [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + to:assert_byte::@2 +print_cls: scope:[print_cls] from main + [68] phi() [ ] ( main:2::print_cls:5 [ ] ) + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [69] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [73] return [ ] ( main:2::print_cls:5 [ ] ) + to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constants.log b/src/main/java/dk/camelot64/kickc/test/ref/constants.log new file mode 100644 index 000000000..11c57050b --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/constants.log @@ -0,0 +1,8706 @@ +import "print.kc" +const byte* BGCOL = $d021; +const byte GREEN = 5; +const byte RED = 2 ; + +void main() { + print_cls(); + *BGCOL = GREEN; + test_bytes(); + test_sbytes(); +} + +// Test different byte constants +void test_bytes() { + byte bb=0; + assert_byte("0=0@", bb, 0); + byte bc=bb+2; + assert_byte("0+2=2@", bc, 2); + byte bd=bc-4; + assert_byte("0+2-4=254@", bd, 254); +} + +void assert_byte(byte* msg, byte b, byte c) { + print_str(msg); + print_str(" @"); + if(b!=c) { + *BGCOL = RED; + print_str("fail!@"); + } else { + print_str("ok@"); + } + print_ln(); +} + +// Test different signed byte constants +void test_sbytes() { + signed byte bb=0; + assert_sbyte("0=0@", bb, 0); + signed byte bc=bb+2; + assert_sbyte("0+2=2@", bc, 2); + signed byte bd=bc-4; + assert_sbyte("0+2-4=-2@", bd, -2); + signed byte be=-bd; + assert_sbyte("-(0+2-4)=2@", be, 2); + signed byte bf=-127-127; + assert_sbyte("-127-127=2@", bf, 2); +} + +void assert_sbyte(byte* msg, signed byte b, signed byte c) { + print_str(msg); + print_str(" @"); + if(b!=c) { + *BGCOL = RED; + print_str("fail!@"); + } else { + print_str("ok@"); + } + print_ln(); +} + +Importing print.kc + +byte* line_cursor = $0400; +byte* char_cursor = line_cursor; + +// Print a zero-terminated string +void print_str(byte* str) { + while(*str!='@') { + *(char_cursor++) = *(str++); + } +} + +// Print a newline +void print_ln() { + do { + line_cursor = line_cursor + $28; + } while (line_cursorw); + print_byte(>4]); + print_char(hextab[b&$f]); +} + +// Print a single char +void print_char(byte ch) { + *(char_cursor++) = ch; +} + +// Clear the screen +void print_cls() { + for(byte* sc=$0400; sc!=$0400+1000; sc++) { + *sc = ' '; + } +} + + + +Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor +Adding pre/post-modifier (byte*) print_str::str ← ++ (byte*) print_str::str +Adding pre/post-modifier (byte*) char_cursor ← ++ (byte*) char_cursor +Adding pre/post-modifier (byte*) print_cls::sc ← ++ (byte*) print_cls::sc +PROGRAM + (byte*) line_cursor ← (word/signed word) 1024 + (byte*) char_cursor ← (byte*) line_cursor +proc (void()) print_str((byte*) print_str::str) +print_str::@1: + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + goto print_str::@3 +print_str::@2: + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + goto print_str::@1 +print_str::@3: +print_str::@return: + return +endproc // print_str() +proc (void()) print_ln() +print_ln::@1: + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor +print_ln::@return: + return +endproc // print_ln() +proc (void()) print_word((word) print_word::w) + (byte~) print_word::$0 ← > (word) print_word::w + (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 + (byte~) print_word::$2 ← < (word) print_word::w + (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 +print_word::@return: + return +endproc // print_word() +proc (void()) print_byte((byte) print_byte::b) + (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) +print_byte::@return: + return +endproc // print_byte() +proc (void()) print_char((byte) print_char::ch) + *((byte*) char_cursor) ← (byte) print_char::ch + (byte*) char_cursor ← ++ (byte*) char_cursor +print_char::@return: + return +endproc // print_char() +proc (void()) print_cls() + (byte*) print_cls::sc ← (word/signed word) 1024 +print_cls::@1: + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 +print_cls::@return: + return +endproc // print_cls() + (byte*) BGCOL ← (word) 53281 + (byte) GREEN ← (byte/signed byte/word/signed word) 5 + (byte) RED ← (byte/signed byte/word/signed word) 2 +proc (void()) main() + (void~) main::$0 ← call print_cls + *((byte*) BGCOL) ← (byte) GREEN + (void~) main::$1 ← call test_bytes + (void~) main::$2 ← call test_sbytes +main::@return: + return +endproc // main() +proc (void()) test_bytes() + (byte) test_bytes::bb ← (byte/signed byte/word/signed word) 0 + (void~) test_bytes::$0 ← call assert_byte (string) "0=0@" (byte) test_bytes::bb (byte/signed byte/word/signed word) 0 + (byte~) test_bytes::$1 ← (byte) test_bytes::bb + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc ← (byte~) test_bytes::$1 + (void~) test_bytes::$2 ← call assert_byte (string) "0+2=2@" (byte) test_bytes::bc (byte/signed byte/word/signed word) 2 + (byte~) test_bytes::$3 ← (byte) test_bytes::bc - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd ← (byte~) test_bytes::$3 + (void~) test_bytes::$4 ← call assert_byte (string) "0+2-4=254@" (byte) test_bytes::bd (byte/word/signed word) 254 +test_bytes::@return: + return +endproc // test_bytes() +proc (void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) + (void~) assert_byte::$0 ← call print_str (byte*) assert_byte::msg + (void~) assert_byte::$1 ← call print_str (string) " @" + (boolean~) assert_byte::$2 ← (byte) assert_byte::b != (byte) assert_byte::c + (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + *((byte*) BGCOL) ← (byte) RED + (void~) assert_byte::$4 ← call print_str (string) "fail!@" + goto assert_byte::@2 +assert_byte::@1: + (void~) assert_byte::$5 ← call print_str (string) "ok@" +assert_byte::@2: + (void~) assert_byte::$6 ← call print_ln +assert_byte::@return: + return +endproc // assert_byte() +proc (void()) test_sbytes() + (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word) 0 + (void~) test_sbytes::$0 ← call assert_sbyte (string) "0=0@" (signed byte) test_sbytes::bb (byte/signed byte/word/signed word) 0 + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc ← (signed byte~) test_sbytes::$1 + (void~) test_sbytes::$2 ← call assert_sbyte (string) "0+2=2@" (signed byte) test_sbytes::bc (byte/signed byte/word/signed word) 2 + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + (void~) test_sbytes::$5 ← call assert_sbyte (string) "0+2-4=-2@" (signed byte) test_sbytes::bd (signed byte/signed word~) test_sbytes::$4 + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd + (signed byte) test_sbytes::be ← (signed byte~) test_sbytes::$6 + (void~) test_sbytes::$7 ← call assert_sbyte (string) "-(0+2-4)=2@" (signed byte) test_sbytes::be (byte/signed byte/word/signed word) 2 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf ← (signed byte~) test_sbytes::$9 + (void~) test_sbytes::$10 ← call assert_sbyte (string) "-127-127=2@" (signed byte) test_sbytes::bf (byte/signed byte/word/signed word) 2 +test_sbytes::@return: + return +endproc // test_sbytes() +proc (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) + (void~) assert_sbyte::$0 ← call print_str (byte*) assert_sbyte::msg + (void~) assert_sbyte::$1 ← call print_str (string) " @" + (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b != (signed byte) assert_sbyte::c + (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + *((byte*) BGCOL) ← (byte) RED + (void~) assert_sbyte::$4 ← call print_str (string) "fail!@" + goto assert_sbyte::@2 +assert_sbyte::@1: + (void~) assert_sbyte::$5 ← call print_str (string) "ok@" +assert_sbyte::@2: + (void~) assert_sbyte::$6 ← call print_ln +assert_sbyte::@return: + return +endproc // assert_sbyte() + call main + +SYMBOLS +(byte*) BGCOL +(byte) GREEN +(byte) RED +(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) +(void~) assert_byte::$0 +(void~) assert_byte::$1 +(boolean~) assert_byte::$2 +(boolean~) assert_byte::$3 +(void~) assert_byte::$4 +(void~) assert_byte::$5 +(void~) assert_byte::$6 +(label) assert_byte::@1 +(label) assert_byte::@2 +(label) assert_byte::@return +(byte) assert_byte::b +(byte) assert_byte::c +(byte*) assert_byte::msg +(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) +(void~) assert_sbyte::$0 +(void~) assert_sbyte::$1 +(boolean~) assert_sbyte::$2 +(boolean~) assert_sbyte::$3 +(void~) assert_sbyte::$4 +(void~) assert_sbyte::$5 +(void~) assert_sbyte::$6 +(label) assert_sbyte::@1 +(label) assert_sbyte::@2 +(label) assert_sbyte::@return +(signed byte) assert_sbyte::b +(signed byte) assert_sbyte::c +(byte*) assert_sbyte::msg +(byte*) char_cursor +(byte*) line_cursor +(void()) main() +(void~) main::$0 +(void~) main::$1 +(void~) main::$2 +(label) main::@return +(void()) print_byte((byte) print_byte::b) +(byte~) print_byte::$0 +(void~) print_byte::$1 +(byte~) print_byte::$2 +(void~) print_byte::$3 +(label) print_byte::@return +(byte) print_byte::b +(byte[]) print_byte::hextab +(void()) print_char((byte) print_char::ch) +(label) print_char::@return +(byte) print_char::ch +(void()) print_cls() +(word/signed word~) print_cls::$0 +(boolean~) print_cls::$1 +(label) print_cls::@1 +(label) print_cls::@return +(byte*) print_cls::sc +(void()) print_ln() +(byte*~) print_ln::$0 +(boolean~) print_ln::$1 +(label) print_ln::@1 +(label) print_ln::@return +(void()) print_str((byte*) print_str::str) +(boolean~) print_str::$0 +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@3 +(label) print_str::@return +(byte*) print_str::str +(void()) print_word((word) print_word::w) +(byte~) print_word::$0 +(void~) print_word::$1 +(byte~) print_word::$2 +(void~) print_word::$3 +(label) print_word::@return +(word) print_word::w +(void()) test_bytes() +(void~) test_bytes::$0 +(byte~) test_bytes::$1 +(void~) test_bytes::$2 +(byte~) test_bytes::$3 +(void~) test_bytes::$4 +(label) test_bytes::@return +(byte) test_bytes::bb +(byte) test_bytes::bc +(byte) test_bytes::bd +(void()) test_sbytes() +(void~) test_sbytes::$0 +(signed byte~) test_sbytes::$1 +(void~) test_sbytes::$10 +(void~) test_sbytes::$2 +(signed byte~) test_sbytes::$3 +(signed byte/signed word~) test_sbytes::$4 +(void~) test_sbytes::$5 +(signed byte~) test_sbytes::$6 +(void~) test_sbytes::$7 +(signed byte/signed word~) test_sbytes::$8 +(signed byte~) test_sbytes::$9 +(label) test_sbytes::@return +(signed byte) test_sbytes::bb +(signed byte) test_sbytes::bc +(signed byte) test_sbytes::bd +(signed byte) test_sbytes::be +(signed byte) test_sbytes::bf + +Promoting word/signed word to byte* in line_cursor ← ((byte*)) 1024 +Promoting word/signed word to byte* in print_cls::sc ← ((byte*)) 1024 +Promoting word to byte* in BGCOL ← ((byte*)) 53281 +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) line_cursor ← ((byte*)) (word/signed word) 1024 + (byte*) char_cursor ← (byte*) line_cursor + to:@1 +print_str: scope:[print_str] from + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@4 +print_str::@2: scope:[print_str] from print_str::@1 print_str::@5 + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + to:print_str::@1 +print_str::@4: scope:[print_str] from print_str::@1 + to:print_str::@3 +print_str::@3: scope:[print_str] from print_str::@4 print_str::@6 + to:print_str::@return +print_str::@5: scope:[print_str] from + to:print_str::@2 +print_str::@6: scope:[print_str] from + to:print_str::@3 +print_str::@return: scope:[print_str] from print_str::@3 + return + to:@return +@1: scope:[] from @begin + to:@2 +print_ln: scope:[print_ln] from + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +@2: scope:[] from @1 + to:@3 +print_word: scope:[print_word] from + (byte~) print_word::$0 ← > (word) print_word::w + (void~) print_word::$1 ← call print_byte (byte~) print_word::$0 + (byte~) print_word::$2 ← < (word) print_word::w + (void~) print_word::$3 ← call print_byte (byte~) print_word::$2 + to:print_word::@return +print_word::@return: scope:[print_word] from print_word + return + to:@return +@3: scope:[] from @2 + to:@4 +print_byte: scope:[print_byte] from + (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } + (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) + to:print_byte::@return +print_byte::@return: scope:[print_byte] from print_byte + return + to:@return +@4: scope:[] from @3 + to:@5 +print_char: scope:[print_char] from + *((byte*) char_cursor) ← (byte) print_char::ch + (byte*) char_cursor ← ++ (byte*) char_cursor + to:print_char::@return +print_char::@return: scope:[print_char] from print_char + return + to:@return +@5: scope:[] from @4 + to:@6 +print_cls: scope:[print_cls] from + (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@2 +print_cls::@2: scope:[print_cls] from print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@2 + return + to:@return +@6: scope:[] from @5 + (byte*) BGCOL ← ((byte*)) (word) 53281 + (byte) GREEN ← (byte/signed byte/word/signed word) 5 + (byte) RED ← (byte/signed byte/word/signed word) 2 + to:@7 +main: scope:[main] from + (void~) main::$0 ← call print_cls + *((byte*) BGCOL) ← (byte) GREEN + (void~) main::$1 ← call test_bytes + (void~) main::$2 ← call test_sbytes + to:main::@return +main::@return: scope:[main] from main + return + to:@return +@7: scope:[] from @6 + to:@8 +test_bytes: scope:[test_bytes] from + (byte) test_bytes::bb ← (byte/signed byte/word/signed word) 0 + (void~) test_bytes::$0 ← call assert_byte (string) "0=0@" (byte) test_bytes::bb (byte/signed byte/word/signed word) 0 + (byte~) test_bytes::$1 ← (byte) test_bytes::bb + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc ← (byte~) test_bytes::$1 + (void~) test_bytes::$2 ← call assert_byte (string) "0+2=2@" (byte) test_bytes::bc (byte/signed byte/word/signed word) 2 + (byte~) test_bytes::$3 ← (byte) test_bytes::bc - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd ← (byte~) test_bytes::$3 + (void~) test_bytes::$4 ← call assert_byte (string) "0+2-4=254@" (byte) test_bytes::bd (byte/word/signed word) 254 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes + return + to:@return +@8: scope:[] from @7 + to:@9 +assert_byte: scope:[assert_byte] from + (void~) assert_byte::$0 ← call print_str (byte*) assert_byte::msg + (void~) assert_byte::$1 ← call print_str (string) " @" + (boolean~) assert_byte::$2 ← (byte) assert_byte::b != (byte) assert_byte::c + (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte assert_byte::@4 + (void~) assert_byte::$5 ← call print_str (string) "ok@" + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte + *((byte*) BGCOL) ← (byte) RED + (void~) assert_byte::$4 ← call print_str (string) "fail!@" + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + (void~) assert_byte::$6 ← call print_ln + to:assert_byte::@return +assert_byte::@4: scope:[assert_byte] from + to:assert_byte::@1 +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + return + to:@return +@9: scope:[] from @8 + to:@10 +test_sbytes: scope:[test_sbytes] from + (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word) 0 + (void~) test_sbytes::$0 ← call assert_sbyte (string) "0=0@" (signed byte) test_sbytes::bb (byte/signed byte/word/signed word) 0 + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc ← (signed byte~) test_sbytes::$1 + (void~) test_sbytes::$2 ← call assert_sbyte (string) "0+2=2@" (signed byte) test_sbytes::bc (byte/signed byte/word/signed word) 2 + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + (void~) test_sbytes::$5 ← call assert_sbyte (string) "0+2-4=-2@" (signed byte) test_sbytes::bd (signed byte/signed word~) test_sbytes::$4 + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd + (signed byte) test_sbytes::be ← (signed byte~) test_sbytes::$6 + (void~) test_sbytes::$7 ← call assert_sbyte (string) "-(0+2-4)=2@" (signed byte) test_sbytes::be (byte/signed byte/word/signed word) 2 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf ← (signed byte~) test_sbytes::$9 + (void~) test_sbytes::$10 ← call assert_sbyte (string) "-127-127=2@" (signed byte) test_sbytes::bf (byte/signed byte/word/signed word) 2 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes + return + to:@return +@10: scope:[] from @9 + to:@11 +assert_sbyte: scope:[assert_sbyte] from + (void~) assert_sbyte::$0 ← call print_str (byte*) assert_sbyte::msg + (void~) assert_sbyte::$1 ← call print_str (string) " @" + (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b != (signed byte) assert_sbyte::c + (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte assert_sbyte::@4 + (void~) assert_sbyte::$5 ← call print_str (string) "ok@" + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte + *((byte*) BGCOL) ← (byte) RED + (void~) assert_sbyte::$4 ← call print_str (string) "fail!@" + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + (void~) assert_sbyte::$6 ← call print_ln + to:assert_sbyte::@return +assert_sbyte::@4: scope:[assert_sbyte] from + to:assert_sbyte::@1 +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + return + to:@return +@11: scope:[] from @10 + call main + to:@end +@end: scope:[] from @11 + +Removing unused procedure print_word +Removing unused procedure print_byte +Removing unused procedure print_char +Eliminating unused variable - keeping the call (void~) main::$0 +Eliminating unused variable - keeping the call (void~) main::$1 +Eliminating unused variable - keeping the call (void~) main::$2 +Eliminating unused variable - keeping the call (void~) test_bytes::$0 +Eliminating unused variable - keeping the call (void~) test_bytes::$2 +Eliminating unused variable - keeping the call (void~) test_bytes::$4 +Eliminating unused variable - keeping the call (void~) assert_byte::$0 +Eliminating unused variable - keeping the call (void~) assert_byte::$1 +Eliminating unused variable - keeping the call (void~) assert_byte::$5 +Eliminating unused variable - keeping the call (void~) assert_byte::$4 +Eliminating unused variable - keeping the call (void~) assert_byte::$6 +Eliminating unused variable - keeping the call (void~) test_sbytes::$0 +Eliminating unused variable - keeping the call (void~) test_sbytes::$2 +Eliminating unused variable - keeping the call (void~) test_sbytes::$5 +Eliminating unused variable - keeping the call (void~) test_sbytes::$7 +Eliminating unused variable - keeping the call (void~) test_sbytes::$10 +Eliminating unused variable - keeping the call (void~) assert_sbyte::$0 +Eliminating unused variable - keeping the call (void~) assert_sbyte::$1 +Eliminating unused variable - keeping the call (void~) assert_sbyte::$5 +Eliminating unused variable - keeping the call (void~) assert_sbyte::$4 +Eliminating unused variable - keeping the call (void~) assert_sbyte::$6 +Creating constant string variable for inline (const byte[]) test_bytes::msg "0=0@" +Creating constant string variable for inline (const byte[]) test_bytes::msg1 "0+2=2@" +Creating constant string variable for inline (const byte[]) test_bytes::msg2 "0+2-4=254@" +Creating constant string variable for inline (const byte[]) assert_byte::str " @" +Creating constant string variable for inline (const byte[]) assert_byte::str1 "ok@" +Creating constant string variable for inline (const byte[]) assert_byte::str2 "fail!@" +Creating constant string variable for inline (const byte[]) test_sbytes::msg "0=0@" +Creating constant string variable for inline (const byte[]) test_sbytes::msg1 "0+2=2@" +Creating constant string variable for inline (const byte[]) test_sbytes::msg2 "0+2-4=-2@" +Creating constant string variable for inline (const byte[]) test_sbytes::msg3 "-(0+2-4)=2@" +Creating constant string variable for inline (const byte[]) test_sbytes::msg4 "-127-127=2@" +Creating constant string variable for inline (const byte[]) assert_sbyte::str " @" +Creating constant string variable for inline (const byte[]) assert_sbyte::str1 "ok@" +Creating constant string variable for inline (const byte[]) assert_sbyte::str2 "fail!@" +Removing empty block print_str::@4 +Removing empty block print_str::@3 +Removing empty block print_str::@5 +Removing empty block print_str::@6 +Removing empty block @1 +Removing empty block @2 +Removing empty block @3 +Removing empty block @4 +Removing empty block @5 +Removing empty block print_cls::@2 +Removing empty block @7 +Removing empty block @8 +Removing empty block assert_byte::@4 +Removing empty block @9 +Removing empty block @10 +Removing empty block assert_sbyte::@4 +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) line_cursor ← ((byte*)) (word/signed word) 1024 + (byte*) char_cursor ← (byte*) line_cursor + to:@6 +print_str: scope:[print_str] from + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from + (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL ← ((byte*)) (word) 53281 + (byte) GREEN ← (byte/signed byte/word/signed word) 5 + (byte) RED ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from + call print_cls + *((byte*) BGCOL) ← (byte) GREEN + call test_bytes + call test_sbytes + to:main::@return +main::@return: scope:[main] from main + return + to:@return +test_bytes: scope:[test_bytes] from + (byte) test_bytes::bb ← (byte/signed byte/word/signed word) 0 + call assert_byte (const byte[]) test_bytes::msg (byte) test_bytes::bb (byte/signed byte/word/signed word) 0 + (byte~) test_bytes::$1 ← (byte) test_bytes::bb + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc ← (byte~) test_bytes::$1 + call assert_byte (const byte[]) test_bytes::msg1 (byte) test_bytes::bc (byte/signed byte/word/signed word) 2 + (byte~) test_bytes::$3 ← (byte) test_bytes::bc - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd ← (byte~) test_bytes::$3 + call assert_byte (const byte[]) test_bytes::msg2 (byte) test_bytes::bd (byte/word/signed word) 254 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes + return + to:@return +assert_byte: scope:[assert_byte] from + call print_str (byte*) assert_byte::msg + call print_str (const byte[]) assert_byte::str + (boolean~) assert_byte::$2 ← (byte) assert_byte::b != (byte) assert_byte::c + (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte + call print_str (const byte[]) assert_byte::str1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte + *((byte*) BGCOL) ← (byte) RED + call print_str (const byte[]) assert_byte::str2 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + call print_ln + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + return + to:@return +test_sbytes: scope:[test_sbytes] from + (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word) 0 + call assert_sbyte (const byte[]) test_sbytes::msg (signed byte) test_sbytes::bb (byte/signed byte/word/signed word) 0 + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc ← (signed byte~) test_sbytes::$1 + call assert_sbyte (const byte[]) test_sbytes::msg1 (signed byte) test_sbytes::bc (byte/signed byte/word/signed word) 2 + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + call assert_sbyte (const byte[]) test_sbytes::msg2 (signed byte) test_sbytes::bd (signed byte/signed word~) test_sbytes::$4 + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd + (signed byte) test_sbytes::be ← (signed byte~) test_sbytes::$6 + call assert_sbyte (const byte[]) test_sbytes::msg3 (signed byte) test_sbytes::be (byte/signed byte/word/signed word) 2 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf ← (signed byte~) test_sbytes::$9 + call assert_sbyte (const byte[]) test_sbytes::msg4 (signed byte) test_sbytes::bf (byte/signed byte/word/signed word) 2 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes + return + to:@return +assert_sbyte: scope:[assert_sbyte] from + call print_str (byte*) assert_sbyte::msg + call print_str (const byte[]) assert_sbyte::str + (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b != (signed byte) assert_sbyte::c + (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte + call print_str (const byte[]) assert_sbyte::str1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte + *((byte*) BGCOL) ← (byte) RED + call print_str (const byte[]) assert_sbyte::str2 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + call print_ln + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + return + to:@return +@11: scope:[] from @6 + call main + to:@end +@end: scope:[] from @11 + +PROCEDURE MODIFY VARIABLE ANALYSIS +print_str modifies char_cursor +print_ln modifies line_cursor +print_ln modifies char_cursor +main modifies char_cursor +main modifies line_cursor +test_bytes modifies char_cursor +test_bytes modifies line_cursor +assert_byte modifies char_cursor +assert_byte modifies line_cursor +test_sbytes modifies char_cursor +test_sbytes modifies line_cursor +assert_sbyte modifies char_cursor +assert_sbyte modifies line_cursor + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL +@begin: scope:[] from + (byte*) line_cursor ← ((byte*)) (word/signed word) 1024 + (byte*) char_cursor ← (byte*) line_cursor + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (boolean~) print_str::$0 ← *((byte*) print_str::str) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor) ← *((byte*) print_str::str) + (byte*) char_cursor ← ++ (byte*) char_cursor + (byte*) print_str::str ← ++ (byte*) print_str::str + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + (byte*) char_cursor ← (byte*) char_cursor + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*~) print_ln::$0 ← (byte*) line_cursor + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor < (byte*) char_cursor + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) char_cursor ← (byte*) line_cursor + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + (byte*) line_cursor ← (byte*) line_cursor + (byte*) char_cursor ← (byte*) char_cursor + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + *((byte*) print_cls::sc) ← (byte) ' ' + (byte*) print_cls::sc ← ++ (byte*) print_cls::sc + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL ← ((byte*)) (word) 53281 + (byte) GREEN ← (byte/signed byte/word/signed word) 5 + (byte) RED ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL) ← (byte) GREEN + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + to:main::@return +main::@return: scope:[main] from main::@3 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte) test_bytes::bb ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg ← (const byte[]) test_bytes::msg + (byte) assert_byte::b ← (byte) test_bytes::bb + (byte) assert_byte::c ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + (byte~) test_bytes::$1 ← (byte) test_bytes::bb + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc ← (byte~) test_bytes::$1 + (byte*) assert_byte::msg ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b ← (byte) test_bytes::bc + (byte) assert_byte::c ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + (byte~) test_bytes::$3 ← (byte) test_bytes::bc - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd ← (byte~) test_bytes::$3 + (byte*) assert_byte::msg ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b ← (byte) test_bytes::bd + (byte) assert_byte::c ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) print_str::str ← (byte*) assert_byte::msg + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) char_cursor ← (byte*) char_cursor + (byte*) print_str::str ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) char_cursor ← (byte*) char_cursor + (boolean~) assert_byte::$2 ← (byte) assert_byte::b != (byte) assert_byte::c + (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) char_cursor ← (byte*) char_cursor + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL) ← (byte) RED + (byte*) print_str::str ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) char_cursor ← (byte*) char_cursor + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) line_cursor ← (byte*) line_cursor + (byte*) char_cursor ← (byte*) char_cursor + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (signed byte) test_sbytes::bb ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b ← (signed byte) test_sbytes::bb + (signed byte) assert_sbyte::c ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc ← (signed byte~) test_sbytes::$1 + (byte*) assert_sbyte::msg ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b ← (signed byte) test_sbytes::bc + (signed byte) assert_sbyte::c ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b ← (signed byte) test_sbytes::bd + (signed byte) assert_sbyte::c ← (signed byte/signed word~) test_sbytes::$4 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd + (signed byte) test_sbytes::be ← (signed byte~) test_sbytes::$6 + (byte*) assert_sbyte::msg ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b ← (signed byte) test_sbytes::be + (signed byte) assert_sbyte::c ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf ← (signed byte~) test_sbytes::$9 + (byte*) assert_sbyte::msg ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b ← (signed byte) test_sbytes::bf + (signed byte) assert_sbyte::c ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) print_str::str ← (byte*) assert_sbyte::msg + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) char_cursor ← (byte*) char_cursor + (byte*) print_str::str ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) char_cursor ← (byte*) char_cursor + (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b != (signed byte) assert_sbyte::c + (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) char_cursor ← (byte*) char_cursor + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL) ← (byte) RED + (byte*) print_str::str ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) char_cursor ← (byte*) char_cursor + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) line_cursor ← (byte*) line_cursor + (byte*) char_cursor ← (byte*) char_cursor + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) char_cursor ← (byte*) char_cursor + (byte*) line_cursor ← (byte*) line_cursor + to:@end +@end: scope:[] from @12 + +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 + (byte*) char_cursor#0 ← (byte*) line_cursor#0 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#66 assert_byte::@3/(byte*) char_cursor#67 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#71 assert_sbyte::@3/(byte*) char_cursor#72 assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#61 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#9 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#9) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + (byte*) char_cursor#31 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) print_str::str#10 ← phi( print_str::@1/(byte*) print_str::str#9 ) + *((byte*) char_cursor#31) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#31 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + (byte*) char_cursor#32 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#32 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor#1 ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) line_cursor#22 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#22 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + (byte*) char_cursor#34 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#23 ← phi( print_ln::@2/(byte*) line_cursor#22 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#23 + (byte*) char_cursor#4 ← (byte*) char_cursor#34 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) line_cursor#54 ← phi( @begin/(byte*) line_cursor#0 ) + (byte*) char_cursor#77 ← phi( @begin/(byte*) char_cursor#0 ) + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + (byte*) line_cursor#49 ← phi( @11/(byte*) line_cursor#48 ) + (byte*) char_cursor#76 ← phi( @11/(byte*) char_cursor#74 ) + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + (byte*) line_cursor#43 ← phi( main/(byte*) line_cursor#49 ) + (byte*) char_cursor#63 ← phi( main/(byte*) char_cursor#76 ) + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#35 + (byte*) line_cursor#3 ← (byte*) line_cursor#24 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#3 ) + (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#5 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#36 + (byte*) line_cursor#4 ← (byte*) line_cursor#25 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte*) line_cursor#26 ← phi( main::@3/(byte*) line_cursor#4 ) + (byte*) char_cursor#37 ← phi( main::@3/(byte*) char_cursor#6 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#37 + (byte*) line_cursor#5 ← (byte*) line_cursor#26 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bb#1 ← phi( test_bytes/(byte) test_bytes::bb#0 ) + (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#44 ) + (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#64 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#38 + (byte*) line_cursor#6 ← (byte*) line_cursor#27 + (byte~) test_bytes::$1 ← (byte) test_bytes::bb#1 + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc#0 ← (byte~) test_bytes::$1 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bc#1 ← phi( test_bytes::@1/(byte) test_bytes::bc#0 ) + (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#6 ) + (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#8 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#39 + (byte*) line_cursor#7 ← (byte*) line_cursor#28 + (byte~) test_bytes::$3 ← (byte) test_bytes::bc#1 - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd#0 ← (byte~) test_bytes::$3 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#7 ) + (byte*) char_cursor#40 ← phi( test_bytes::@2/(byte*) char_cursor#9 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#40 + (byte*) line_cursor#8 ← (byte*) line_cursor#29 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + (byte*) line_cursor#30 ← phi( test_bytes::@3/(byte*) line_cursor#8 ) + (byte*) char_cursor#41 ← phi( test_bytes::@3/(byte*) char_cursor#10 ) + (byte*) char_cursor#11 ← (byte*) char_cursor#41 + (byte*) line_cursor#9 ← (byte*) line_cursor#30 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#63 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#6 test_bytes::@2/(byte*) line_cursor#7 ) + (byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#8 test_bytes::@2/(byte*) char_cursor#9 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) line_cursor#61 ← phi( assert_byte/(byte*) line_cursor#63 ) + (byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 ) + (byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 ) + (byte*) char_cursor#42 ← phi( assert_byte/(byte*) char_cursor#65 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#42 + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) line_cursor#59 ← phi( assert_byte::@5/(byte*) line_cursor#61 ) + (byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 ) + (byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 ) + (byte*) char_cursor#43 ← phi( assert_byte::@5/(byte*) char_cursor#12 ) + (byte*) char_cursor#13 ← (byte*) char_cursor#43 + (boolean~) assert_byte::$2 ← (byte) assert_byte::b#3 != (byte) assert_byte::c#3 + (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) line_cursor#55 ← phi( assert_byte::@6/(byte*) line_cursor#59 ) + (byte*) char_cursor#66 ← phi( assert_byte::@6/(byte*) char_cursor#13 ) + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) line_cursor#50 ← phi( assert_byte::@1/(byte*) line_cursor#55 ) + (byte*) char_cursor#44 ← phi( assert_byte::@1/(byte*) char_cursor#66 ) + (byte*) char_cursor#14 ← (byte*) char_cursor#44 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + (byte*) line_cursor#56 ← phi( assert_byte::@6/(byte*) line_cursor#59 ) + (byte*) char_cursor#67 ← phi( assert_byte::@6/(byte*) char_cursor#13 ) + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) line_cursor#51 ← phi( assert_byte::@3/(byte*) line_cursor#56 ) + (byte*) char_cursor#45 ← phi( assert_byte::@3/(byte*) char_cursor#67 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#45 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 ) + (byte*) line_cursor#45 ← phi( assert_byte::@7/(byte*) line_cursor#50 assert_byte::@8/(byte*) line_cursor#51 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) char_cursor#46 ← phi( assert_byte::@2/(byte*) char_cursor#68 ) + (byte*) line_cursor#31 ← phi( assert_byte::@2/(byte*) line_cursor#45 ) + (byte*) line_cursor#10 ← (byte*) line_cursor#31 + (byte*) char_cursor#16 ← (byte*) char_cursor#46 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + (byte*) line_cursor#32 ← phi( assert_byte::@9/(byte*) line_cursor#10 ) + (byte*) char_cursor#47 ← phi( assert_byte::@9/(byte*) char_cursor#16 ) + (byte*) char_cursor#17 ← (byte*) char_cursor#47 + (byte*) line_cursor#11 ← (byte*) line_cursor#32 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#3 ) + (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#5 ) + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bb#1 ← phi( test_sbytes/(signed byte) test_sbytes::bb#0 ) + (byte*) line_cursor#33 ← phi( test_sbytes/(byte*) line_cursor#46 ) + (byte*) char_cursor#48 ← phi( test_sbytes/(byte*) char_cursor#69 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#48 + (byte*) line_cursor#12 ← (byte*) line_cursor#33 + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb#1 + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc#0 ← (signed byte~) test_sbytes::$1 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bc#1 ← phi( test_sbytes::@1/(signed byte) test_sbytes::bc#0 ) + (byte*) line_cursor#34 ← phi( test_sbytes::@1/(byte*) line_cursor#12 ) + (byte*) char_cursor#49 ← phi( test_sbytes::@1/(byte*) char_cursor#18 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#49 + (byte*) line_cursor#13 ← (byte*) line_cursor#34 + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc#1 - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd#0 ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + (signed byte) assert_sbyte::c#2 ← (signed byte/signed word~) test_sbytes::$4 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::bd#1 ← phi( test_sbytes::@2/(signed byte) test_sbytes::bd#0 ) + (byte*) line_cursor#35 ← phi( test_sbytes::@2/(byte*) line_cursor#13 ) + (byte*) char_cursor#50 ← phi( test_sbytes::@2/(byte*) char_cursor#19 ) + (byte*) char_cursor#20 ← (byte*) char_cursor#50 + (byte*) line_cursor#14 ← (byte*) line_cursor#35 + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd#1 + (signed byte) test_sbytes::be#0 ← (signed byte~) test_sbytes::$6 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) line_cursor#36 ← phi( test_sbytes::@3/(byte*) line_cursor#14 ) + (byte*) char_cursor#51 ← phi( test_sbytes::@3/(byte*) char_cursor#20 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#51 + (byte*) line_cursor#15 ← (byte*) line_cursor#36 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte~) test_sbytes::$9 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) line_cursor#37 ← phi( test_sbytes::@4/(byte*) line_cursor#15 ) + (byte*) char_cursor#52 ← phi( test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) char_cursor#22 ← (byte*) char_cursor#52 + (byte*) line_cursor#16 ← (byte*) line_cursor#37 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + (byte*) line_cursor#38 ← phi( test_sbytes::@5/(byte*) line_cursor#16 ) + (byte*) char_cursor#53 ← phi( test_sbytes::@5/(byte*) char_cursor#22 ) + (byte*) char_cursor#23 ← (byte*) char_cursor#53 + (byte*) line_cursor#17 ← (byte*) line_cursor#38 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#64 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 ) + (signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) line_cursor#62 ← phi( assert_sbyte/(byte*) line_cursor#64 ) + (signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 ) + (signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 ) + (byte*) char_cursor#54 ← phi( assert_sbyte/(byte*) char_cursor#70 ) + (byte*) char_cursor#24 ← (byte*) char_cursor#54 + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) line_cursor#60 ← phi( assert_sbyte::@5/(byte*) line_cursor#62 ) + (signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 ) + (signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 ) + (byte*) char_cursor#55 ← phi( assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#55 + (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b#5 != (signed byte) assert_sbyte::c#5 + (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) line_cursor#57 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 ) + (byte*) char_cursor#71 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 ) + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) line_cursor#52 ← phi( assert_sbyte::@1/(byte*) line_cursor#57 ) + (byte*) char_cursor#56 ← phi( assert_sbyte::@1/(byte*) char_cursor#71 ) + (byte*) char_cursor#26 ← (byte*) char_cursor#56 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) line_cursor#58 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 ) + (byte*) char_cursor#72 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 ) + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) line_cursor#53 ← phi( assert_sbyte::@3/(byte*) line_cursor#58 ) + (byte*) char_cursor#57 ← phi( assert_sbyte::@3/(byte*) char_cursor#72 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#57 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 ) + (byte*) line_cursor#47 ← phi( assert_sbyte::@7/(byte*) line_cursor#52 assert_sbyte::@8/(byte*) line_cursor#53 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) char_cursor#58 ← phi( assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#39 ← phi( assert_sbyte::@2/(byte*) line_cursor#47 ) + (byte*) line_cursor#18 ← (byte*) line_cursor#39 + (byte*) char_cursor#28 ← (byte*) char_cursor#58 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + (byte*) line_cursor#40 ← phi( assert_sbyte::@9/(byte*) line_cursor#18 ) + (byte*) char_cursor#59 ← phi( assert_sbyte::@9/(byte*) char_cursor#28 ) + (byte*) char_cursor#29 ← (byte*) char_cursor#59 + (byte*) line_cursor#19 ← (byte*) line_cursor#40 + return + to:@return +@11: scope:[] from @6 + (byte*) line_cursor#48 ← phi( @6/(byte*) line_cursor#54 ) + (byte*) char_cursor#74 ← phi( @6/(byte*) char_cursor#77 ) + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) line_cursor#41 ← phi( @11/(byte*) line_cursor#48 ) + (byte*) char_cursor#60 ← phi( @11/(byte*) char_cursor#74 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#60 + (byte*) line_cursor#20 ← (byte*) line_cursor#41 + to:@end +@end: scope:[] from @12 + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 + (byte*) char_cursor#0 ← (byte*) line_cursor#0 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#66 assert_byte::@3/(byte*) char_cursor#67 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#71 assert_sbyte::@3/(byte*) char_cursor#72 assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#61 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#9 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#9) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + (byte*) char_cursor#31 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) print_str::str#10 ← phi( print_str::@1/(byte*) print_str::str#9 ) + *((byte*) char_cursor#31) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#31 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + (byte*) char_cursor#32 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#32 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor#1 ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) line_cursor#22 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#22 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + (byte*) char_cursor#34 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#23 ← phi( print_ln::@2/(byte*) line_cursor#22 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#23 + (byte*) char_cursor#4 ← (byte*) char_cursor#34 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) line_cursor#54 ← phi( @begin/(byte*) line_cursor#0 ) + (byte*) char_cursor#77 ← phi( @begin/(byte*) char_cursor#0 ) + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + (byte*) line_cursor#49 ← phi( @11/(byte*) line_cursor#48 ) + (byte*) char_cursor#76 ← phi( @11/(byte*) char_cursor#74 ) + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + (byte*) line_cursor#43 ← phi( main/(byte*) line_cursor#49 ) + (byte*) char_cursor#63 ← phi( main/(byte*) char_cursor#76 ) + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#9 ) + (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#11 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#35 + (byte*) line_cursor#3 ← (byte*) line_cursor#24 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#17 ) + (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#23 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#36 + (byte*) line_cursor#4 ← (byte*) line_cursor#25 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte*) line_cursor#26 ← phi( main::@3/(byte*) line_cursor#4 ) + (byte*) char_cursor#37 ← phi( main::@3/(byte*) char_cursor#6 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#37 + (byte*) line_cursor#5 ← (byte*) line_cursor#26 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bb#1 ← phi( test_bytes/(byte) test_bytes::bb#0 ) + (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#11 ) + (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#17 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#38 + (byte*) line_cursor#6 ← (byte*) line_cursor#27 + (byte~) test_bytes::$1 ← (byte) test_bytes::bb#1 + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc#0 ← (byte~) test_bytes::$1 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bc#1 ← phi( test_bytes::@1/(byte) test_bytes::bc#0 ) + (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#11 ) + (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#17 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#39 + (byte*) line_cursor#7 ← (byte*) line_cursor#28 + (byte~) test_bytes::$3 ← (byte) test_bytes::bc#1 - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd#0 ← (byte~) test_bytes::$3 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#11 ) + (byte*) char_cursor#40 ← phi( test_bytes::@2/(byte*) char_cursor#17 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#40 + (byte*) line_cursor#8 ← (byte*) line_cursor#29 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + (byte*) line_cursor#30 ← phi( test_bytes::@3/(byte*) line_cursor#8 ) + (byte*) char_cursor#41 ← phi( test_bytes::@3/(byte*) char_cursor#10 ) + (byte*) char_cursor#11 ← (byte*) char_cursor#41 + (byte*) line_cursor#9 ← (byte*) line_cursor#30 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#63 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#6 test_bytes::@2/(byte*) line_cursor#7 ) + (byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#8 test_bytes::@2/(byte*) char_cursor#9 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) line_cursor#61 ← phi( assert_byte/(byte*) line_cursor#63 ) + (byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 ) + (byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 ) + (byte*) char_cursor#42 ← phi( assert_byte/(byte*) char_cursor#2 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#42 + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) line_cursor#59 ← phi( assert_byte::@5/(byte*) line_cursor#61 ) + (byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 ) + (byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 ) + (byte*) char_cursor#43 ← phi( assert_byte::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#13 ← (byte*) char_cursor#43 + (boolean~) assert_byte::$2 ← (byte) assert_byte::b#3 != (byte) assert_byte::c#3 + (boolean~) assert_byte::$3 ← ! (boolean~) assert_byte::$2 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) line_cursor#55 ← phi( assert_byte::@6/(byte*) line_cursor#59 ) + (byte*) char_cursor#66 ← phi( assert_byte::@6/(byte*) char_cursor#13 ) + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) line_cursor#50 ← phi( assert_byte::@1/(byte*) line_cursor#55 ) + (byte*) char_cursor#44 ← phi( assert_byte::@1/(byte*) char_cursor#2 ) + (byte*) char_cursor#14 ← (byte*) char_cursor#44 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + (byte*) line_cursor#56 ← phi( assert_byte::@6/(byte*) line_cursor#59 ) + (byte*) char_cursor#67 ← phi( assert_byte::@6/(byte*) char_cursor#13 ) + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) line_cursor#51 ← phi( assert_byte::@3/(byte*) line_cursor#56 ) + (byte*) char_cursor#45 ← phi( assert_byte::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#45 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 ) + (byte*) line_cursor#45 ← phi( assert_byte::@7/(byte*) line_cursor#50 assert_byte::@8/(byte*) line_cursor#51 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) char_cursor#46 ← phi( assert_byte::@2/(byte*) char_cursor#4 ) + (byte*) line_cursor#31 ← phi( assert_byte::@2/(byte*) line_cursor#2 ) + (byte*) line_cursor#10 ← (byte*) line_cursor#31 + (byte*) char_cursor#16 ← (byte*) char_cursor#46 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + (byte*) line_cursor#32 ← phi( assert_byte::@9/(byte*) line_cursor#10 ) + (byte*) char_cursor#47 ← phi( assert_byte::@9/(byte*) char_cursor#16 ) + (byte*) char_cursor#17 ← (byte*) char_cursor#47 + (byte*) line_cursor#11 ← (byte*) line_cursor#32 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#3 ) + (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#5 ) + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bb#1 ← phi( test_sbytes/(signed byte) test_sbytes::bb#0 ) + (byte*) line_cursor#33 ← phi( test_sbytes/(byte*) line_cursor#19 ) + (byte*) char_cursor#48 ← phi( test_sbytes/(byte*) char_cursor#29 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#48 + (byte*) line_cursor#12 ← (byte*) line_cursor#33 + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb#1 + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc#0 ← (signed byte~) test_sbytes::$1 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bc#1 ← phi( test_sbytes::@1/(signed byte) test_sbytes::bc#0 ) + (byte*) line_cursor#34 ← phi( test_sbytes::@1/(byte*) line_cursor#19 ) + (byte*) char_cursor#49 ← phi( test_sbytes::@1/(byte*) char_cursor#29 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#49 + (byte*) line_cursor#13 ← (byte*) line_cursor#34 + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc#1 - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd#0 ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + (signed byte) assert_sbyte::c#2 ← (signed byte/signed word~) test_sbytes::$4 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::bd#1 ← phi( test_sbytes::@2/(signed byte) test_sbytes::bd#0 ) + (byte*) line_cursor#35 ← phi( test_sbytes::@2/(byte*) line_cursor#19 ) + (byte*) char_cursor#50 ← phi( test_sbytes::@2/(byte*) char_cursor#29 ) + (byte*) char_cursor#20 ← (byte*) char_cursor#50 + (byte*) line_cursor#14 ← (byte*) line_cursor#35 + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd#1 + (signed byte) test_sbytes::be#0 ← (signed byte~) test_sbytes::$6 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) line_cursor#36 ← phi( test_sbytes::@3/(byte*) line_cursor#19 ) + (byte*) char_cursor#51 ← phi( test_sbytes::@3/(byte*) char_cursor#29 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#51 + (byte*) line_cursor#15 ← (byte*) line_cursor#36 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte~) test_sbytes::$9 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) line_cursor#37 ← phi( test_sbytes::@4/(byte*) line_cursor#19 ) + (byte*) char_cursor#52 ← phi( test_sbytes::@4/(byte*) char_cursor#29 ) + (byte*) char_cursor#22 ← (byte*) char_cursor#52 + (byte*) line_cursor#16 ← (byte*) line_cursor#37 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + (byte*) line_cursor#38 ← phi( test_sbytes::@5/(byte*) line_cursor#16 ) + (byte*) char_cursor#53 ← phi( test_sbytes::@5/(byte*) char_cursor#22 ) + (byte*) char_cursor#23 ← (byte*) char_cursor#53 + (byte*) line_cursor#17 ← (byte*) line_cursor#38 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#64 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 ) + (signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) line_cursor#62 ← phi( assert_sbyte/(byte*) line_cursor#64 ) + (signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 ) + (signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 ) + (byte*) char_cursor#54 ← phi( assert_sbyte/(byte*) char_cursor#2 ) + (byte*) char_cursor#24 ← (byte*) char_cursor#54 + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) line_cursor#60 ← phi( assert_sbyte::@5/(byte*) line_cursor#62 ) + (signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 ) + (signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 ) + (byte*) char_cursor#55 ← phi( assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#55 + (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b#5 != (signed byte) assert_sbyte::c#5 + (boolean~) assert_sbyte::$3 ← ! (boolean~) assert_sbyte::$2 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) line_cursor#57 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 ) + (byte*) char_cursor#71 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 ) + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) line_cursor#52 ← phi( assert_sbyte::@1/(byte*) line_cursor#57 ) + (byte*) char_cursor#56 ← phi( assert_sbyte::@1/(byte*) char_cursor#2 ) + (byte*) char_cursor#26 ← (byte*) char_cursor#56 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) line_cursor#58 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 ) + (byte*) char_cursor#72 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 ) + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) line_cursor#53 ← phi( assert_sbyte::@3/(byte*) line_cursor#58 ) + (byte*) char_cursor#57 ← phi( assert_sbyte::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#57 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 ) + (byte*) line_cursor#47 ← phi( assert_sbyte::@7/(byte*) line_cursor#52 assert_sbyte::@8/(byte*) line_cursor#53 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) char_cursor#58 ← phi( assert_sbyte::@2/(byte*) char_cursor#4 ) + (byte*) line_cursor#39 ← phi( assert_sbyte::@2/(byte*) line_cursor#2 ) + (byte*) line_cursor#18 ← (byte*) line_cursor#39 + (byte*) char_cursor#28 ← (byte*) char_cursor#58 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + (byte*) line_cursor#40 ← phi( assert_sbyte::@9/(byte*) line_cursor#18 ) + (byte*) char_cursor#59 ← phi( assert_sbyte::@9/(byte*) char_cursor#28 ) + (byte*) char_cursor#29 ← (byte*) char_cursor#59 + (byte*) line_cursor#19 ← (byte*) line_cursor#40 + return + to:@return +@11: scope:[] from @6 + (byte*) line_cursor#48 ← phi( @6/(byte*) line_cursor#54 ) + (byte*) char_cursor#74 ← phi( @6/(byte*) char_cursor#77 ) + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) line_cursor#41 ← phi( @11/(byte*) line_cursor#5 ) + (byte*) char_cursor#60 ← phi( @11/(byte*) char_cursor#7 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#60 + (byte*) line_cursor#20 ← (byte*) line_cursor#41 + to:@end +@end: scope:[] from @12 + +INITIAL SSA SYMBOL TABLE +(label) @11 +(label) @12 +(label) @6 +(label) @begin +(label) @end +(byte*) BGCOL +(byte*) BGCOL#0 +(byte) GREEN +(byte) GREEN#0 +(byte) RED +(byte) RED#0 +(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) +(boolean~) assert_byte::$2 +(boolean~) assert_byte::$3 +(label) assert_byte::@1 +(label) assert_byte::@2 +(label) assert_byte::@3 +(label) assert_byte::@5 +(label) assert_byte::@6 +(label) assert_byte::@7 +(label) assert_byte::@8 +(label) assert_byte::@9 +(label) assert_byte::@return +(byte) assert_byte::b +(byte) assert_byte::b#0 +(byte) assert_byte::b#1 +(byte) assert_byte::b#2 +(byte) assert_byte::b#3 +(byte) assert_byte::b#4 +(byte) assert_byte::b#5 +(byte) assert_byte::c +(byte) assert_byte::c#0 +(byte) assert_byte::c#1 +(byte) assert_byte::c#2 +(byte) assert_byte::c#3 +(byte) assert_byte::c#4 +(byte) assert_byte::c#5 +(byte*) assert_byte::msg +(byte*) assert_byte::msg#0 +(byte*) assert_byte::msg#1 +(byte*) assert_byte::msg#2 +(byte*) assert_byte::msg#3 +(const byte[]) assert_byte::str = (string) " @" +(const byte[]) assert_byte::str1 = (string) "ok@" +(const byte[]) assert_byte::str2 = (string) "fail!@" +(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) +(boolean~) assert_sbyte::$2 +(boolean~) assert_sbyte::$3 +(label) assert_sbyte::@1 +(label) assert_sbyte::@2 +(label) assert_sbyte::@3 +(label) assert_sbyte::@5 +(label) assert_sbyte::@6 +(label) assert_sbyte::@7 +(label) assert_sbyte::@8 +(label) assert_sbyte::@9 +(label) assert_sbyte::@return +(signed byte) assert_sbyte::b +(signed byte) assert_sbyte::b#0 +(signed byte) assert_sbyte::b#1 +(signed byte) assert_sbyte::b#2 +(signed byte) assert_sbyte::b#3 +(signed byte) assert_sbyte::b#4 +(signed byte) assert_sbyte::b#5 +(signed byte) assert_sbyte::b#6 +(signed byte) assert_sbyte::b#7 +(signed byte) assert_sbyte::c +(signed byte) assert_sbyte::c#0 +(signed byte) assert_sbyte::c#1 +(signed byte) assert_sbyte::c#2 +(signed byte) assert_sbyte::c#3 +(signed byte) assert_sbyte::c#4 +(signed byte) assert_sbyte::c#5 +(signed byte) assert_sbyte::c#6 +(signed byte) assert_sbyte::c#7 +(byte*) assert_sbyte::msg +(byte*) assert_sbyte::msg#0 +(byte*) assert_sbyte::msg#1 +(byte*) assert_sbyte::msg#2 +(byte*) assert_sbyte::msg#3 +(byte*) assert_sbyte::msg#4 +(byte*) assert_sbyte::msg#5 +(const byte[]) assert_sbyte::str = (string) " @" +(const byte[]) assert_sbyte::str1 = (string) "ok@" +(const byte[]) assert_sbyte::str2 = (string) "fail!@" +(byte*) char_cursor +(byte*) char_cursor#0 +(byte*) char_cursor#1 +(byte*) char_cursor#10 +(byte*) char_cursor#11 +(byte*) char_cursor#12 +(byte*) char_cursor#13 +(byte*) char_cursor#14 +(byte*) char_cursor#15 +(byte*) char_cursor#16 +(byte*) char_cursor#17 +(byte*) char_cursor#18 +(byte*) char_cursor#19 +(byte*) char_cursor#2 +(byte*) char_cursor#20 +(byte*) char_cursor#21 +(byte*) char_cursor#22 +(byte*) char_cursor#23 +(byte*) char_cursor#24 +(byte*) char_cursor#25 +(byte*) char_cursor#26 +(byte*) char_cursor#27 +(byte*) char_cursor#28 +(byte*) char_cursor#29 +(byte*) char_cursor#3 +(byte*) char_cursor#30 +(byte*) char_cursor#31 +(byte*) char_cursor#32 +(byte*) char_cursor#33 +(byte*) char_cursor#34 +(byte*) char_cursor#35 +(byte*) char_cursor#36 +(byte*) char_cursor#37 +(byte*) char_cursor#38 +(byte*) char_cursor#39 +(byte*) char_cursor#4 +(byte*) char_cursor#40 +(byte*) char_cursor#41 +(byte*) char_cursor#42 +(byte*) char_cursor#43 +(byte*) char_cursor#44 +(byte*) char_cursor#45 +(byte*) char_cursor#46 +(byte*) char_cursor#47 +(byte*) char_cursor#48 +(byte*) char_cursor#49 +(byte*) char_cursor#5 +(byte*) char_cursor#50 +(byte*) char_cursor#51 +(byte*) char_cursor#52 +(byte*) char_cursor#53 +(byte*) char_cursor#54 +(byte*) char_cursor#55 +(byte*) char_cursor#56 +(byte*) char_cursor#57 +(byte*) char_cursor#58 +(byte*) char_cursor#59 +(byte*) char_cursor#6 +(byte*) char_cursor#60 +(byte*) char_cursor#61 +(byte*) char_cursor#62 +(byte*) char_cursor#63 +(byte*) char_cursor#64 +(byte*) char_cursor#65 +(byte*) char_cursor#66 +(byte*) char_cursor#67 +(byte*) char_cursor#68 +(byte*) char_cursor#69 +(byte*) char_cursor#7 +(byte*) char_cursor#70 +(byte*) char_cursor#71 +(byte*) char_cursor#72 +(byte*) char_cursor#73 +(byte*) char_cursor#74 +(byte*) char_cursor#75 +(byte*) char_cursor#76 +(byte*) char_cursor#77 +(byte*) char_cursor#8 +(byte*) char_cursor#9 +(byte*) line_cursor +(byte*) line_cursor#0 +(byte*) line_cursor#1 +(byte*) line_cursor#10 +(byte*) line_cursor#11 +(byte*) line_cursor#12 +(byte*) line_cursor#13 +(byte*) line_cursor#14 +(byte*) line_cursor#15 +(byte*) line_cursor#16 +(byte*) line_cursor#17 +(byte*) line_cursor#18 +(byte*) line_cursor#19 +(byte*) line_cursor#2 +(byte*) line_cursor#20 +(byte*) line_cursor#21 +(byte*) line_cursor#22 +(byte*) line_cursor#23 +(byte*) line_cursor#24 +(byte*) line_cursor#25 +(byte*) line_cursor#26 +(byte*) line_cursor#27 +(byte*) line_cursor#28 +(byte*) line_cursor#29 +(byte*) line_cursor#3 +(byte*) line_cursor#30 +(byte*) line_cursor#31 +(byte*) line_cursor#32 +(byte*) line_cursor#33 +(byte*) line_cursor#34 +(byte*) line_cursor#35 +(byte*) line_cursor#36 +(byte*) line_cursor#37 +(byte*) line_cursor#38 +(byte*) line_cursor#39 +(byte*) line_cursor#4 +(byte*) line_cursor#40 +(byte*) line_cursor#41 +(byte*) line_cursor#42 +(byte*) line_cursor#43 +(byte*) line_cursor#44 +(byte*) line_cursor#45 +(byte*) line_cursor#46 +(byte*) line_cursor#47 +(byte*) line_cursor#48 +(byte*) line_cursor#49 +(byte*) line_cursor#5 +(byte*) line_cursor#50 +(byte*) line_cursor#51 +(byte*) line_cursor#52 +(byte*) line_cursor#53 +(byte*) line_cursor#54 +(byte*) line_cursor#55 +(byte*) line_cursor#56 +(byte*) line_cursor#57 +(byte*) line_cursor#58 +(byte*) line_cursor#59 +(byte*) line_cursor#6 +(byte*) line_cursor#60 +(byte*) line_cursor#61 +(byte*) line_cursor#62 +(byte*) line_cursor#63 +(byte*) line_cursor#64 +(byte*) line_cursor#7 +(byte*) line_cursor#8 +(byte*) line_cursor#9 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@return +(void()) print_cls() +(word/signed word~) print_cls::$0 +(boolean~) print_cls::$1 +(label) print_cls::@1 +(label) print_cls::@return +(byte*) print_cls::sc +(byte*) print_cls::sc#0 +(byte*) print_cls::sc#1 +(byte*) print_cls::sc#2 +(void()) print_ln() +(byte*~) print_ln::$0 +(boolean~) print_ln::$1 +(label) print_ln::@1 +(label) print_ln::@2 +(label) print_ln::@return +(void()) print_str((byte*) print_str::str) +(boolean~) print_str::$0 +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@return +(byte*) print_str::str +(byte*) print_str::str#0 +(byte*) print_str::str#1 +(byte*) print_str::str#10 +(byte*) print_str::str#11 +(byte*) print_str::str#2 +(byte*) print_str::str#3 +(byte*) print_str::str#4 +(byte*) print_str::str#5 +(byte*) print_str::str#6 +(byte*) print_str::str#7 +(byte*) print_str::str#8 +(byte*) print_str::str#9 +(void()) test_bytes() +(byte~) test_bytes::$1 +(byte~) test_bytes::$3 +(label) test_bytes::@1 +(label) test_bytes::@2 +(label) test_bytes::@3 +(label) test_bytes::@return +(byte) test_bytes::bb +(byte) test_bytes::bb#0 +(byte) test_bytes::bb#1 +(byte) test_bytes::bc +(byte) test_bytes::bc#0 +(byte) test_bytes::bc#1 +(byte) test_bytes::bd +(byte) test_bytes::bd#0 +(const byte[]) test_bytes::msg = (string) "0=0@" +(const byte[]) test_bytes::msg1 = (string) "0+2=2@" +(const byte[]) test_bytes::msg2 = (string) "0+2-4=254@" +(void()) test_sbytes() +(signed byte~) test_sbytes::$1 +(signed byte~) test_sbytes::$3 +(signed byte/signed word~) test_sbytes::$4 +(signed byte~) test_sbytes::$6 +(signed byte/signed word~) test_sbytes::$8 +(signed byte~) test_sbytes::$9 +(label) test_sbytes::@1 +(label) test_sbytes::@2 +(label) test_sbytes::@3 +(label) test_sbytes::@4 +(label) test_sbytes::@5 +(label) test_sbytes::@return +(signed byte) test_sbytes::bb +(signed byte) test_sbytes::bb#0 +(signed byte) test_sbytes::bb#1 +(signed byte) test_sbytes::bc +(signed byte) test_sbytes::bc#0 +(signed byte) test_sbytes::bc#1 +(signed byte) test_sbytes::bd +(signed byte) test_sbytes::bd#0 +(signed byte) test_sbytes::bd#1 +(signed byte) test_sbytes::be +(signed byte) test_sbytes::be#0 +(signed byte) test_sbytes::bf +(signed byte) test_sbytes::bf#0 +(const byte[]) test_sbytes::msg = (string) "0=0@" +(const byte[]) test_sbytes::msg1 = (string) "0+2=2@" +(const byte[]) test_sbytes::msg2 = (string) "0+2-4=-2@" +(const byte[]) test_sbytes::msg3 = (string) "-(0+2-4)=2@" +(const byte[]) test_sbytes::msg4 = (string) "-127-127=2@" + +Inversing boolean not (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 from (boolean~) assert_byte::$2 ← (byte) assert_byte::b#3 != (byte) assert_byte::c#3 +Inversing boolean not (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 from (boolean~) assert_sbyte::$2 ← (signed byte) assert_sbyte::b#5 != (signed byte) assert_sbyte::c#5 +Succesful SSA optimization Pass2UnaryNotSimplification +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) line_cursor#0 ← ((byte*)) (word/signed word) 1024 + (byte*) char_cursor#0 ← (byte*) line_cursor#0 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#66 assert_byte::@3/(byte*) char_cursor#67 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#71 assert_sbyte::@3/(byte*) char_cursor#72 assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#61 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#9 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#9) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + (byte*) char_cursor#31 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) print_str::str#10 ← phi( print_str::@1/(byte*) print_str::str#9 ) + *((byte*) char_cursor#31) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#31 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + (byte*) char_cursor#32 ← phi( print_str::@1/(byte*) char_cursor#61 ) + (byte*) char_cursor#2 ← (byte*) char_cursor#32 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*~) print_ln::$0 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (byte*) line_cursor#1 ← (byte*~) print_ln::$0 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + (byte*) line_cursor#22 ← phi( print_ln::@1/(byte*) line_cursor#1 ) + (byte*) char_cursor#3 ← (byte*) line_cursor#22 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + (byte*) char_cursor#34 ← phi( print_ln::@2/(byte*) char_cursor#3 ) + (byte*) line_cursor#23 ← phi( print_ln::@2/(byte*) line_cursor#22 ) + (byte*) line_cursor#2 ← (byte*) line_cursor#23 + (byte*) char_cursor#4 ← (byte*) char_cursor#34 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) line_cursor#54 ← phi( @begin/(byte*) line_cursor#0 ) + (byte*) char_cursor#77 ← phi( @begin/(byte*) char_cursor#0 ) + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + (byte*) line_cursor#49 ← phi( @11/(byte*) line_cursor#48 ) + (byte*) char_cursor#76 ← phi( @11/(byte*) char_cursor#74 ) + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + (byte*) line_cursor#43 ← phi( main/(byte*) line_cursor#49 ) + (byte*) char_cursor#63 ← phi( main/(byte*) char_cursor#76 ) + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#9 ) + (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#11 ) + (byte*) char_cursor#5 ← (byte*) char_cursor#35 + (byte*) line_cursor#3 ← (byte*) line_cursor#24 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#17 ) + (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#23 ) + (byte*) char_cursor#6 ← (byte*) char_cursor#36 + (byte*) line_cursor#4 ← (byte*) line_cursor#25 + to:main::@return +main::@return: scope:[main] from main::@3 + (byte*) line_cursor#26 ← phi( main::@3/(byte*) line_cursor#4 ) + (byte*) char_cursor#37 ← phi( main::@3/(byte*) char_cursor#6 ) + (byte*) char_cursor#7 ← (byte*) char_cursor#37 + (byte*) line_cursor#5 ← (byte*) line_cursor#26 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bb#1 ← phi( test_bytes/(byte) test_bytes::bb#0 ) + (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#11 ) + (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#17 ) + (byte*) char_cursor#8 ← (byte*) char_cursor#38 + (byte*) line_cursor#6 ← (byte*) line_cursor#27 + (byte~) test_bytes::$1 ← (byte) test_bytes::bb#1 + (byte/signed byte/word/signed word) 2 + (byte) test_bytes::bc#0 ← (byte~) test_bytes::$1 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bc#1 ← phi( test_bytes::@1/(byte) test_bytes::bc#0 ) + (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#11 ) + (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#17 ) + (byte*) char_cursor#9 ← (byte*) char_cursor#39 + (byte*) line_cursor#7 ← (byte*) line_cursor#28 + (byte~) test_bytes::$3 ← (byte) test_bytes::bc#1 - (byte/signed byte/word/signed word) 4 + (byte) test_bytes::bd#0 ← (byte~) test_bytes::$3 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#11 ) + (byte*) char_cursor#40 ← phi( test_bytes::@2/(byte*) char_cursor#17 ) + (byte*) char_cursor#10 ← (byte*) char_cursor#40 + (byte*) line_cursor#8 ← (byte*) line_cursor#29 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + (byte*) line_cursor#30 ← phi( test_bytes::@3/(byte*) line_cursor#8 ) + (byte*) char_cursor#41 ← phi( test_bytes::@3/(byte*) char_cursor#10 ) + (byte*) char_cursor#11 ← (byte*) char_cursor#41 + (byte*) line_cursor#9 ← (byte*) line_cursor#30 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#63 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#6 test_bytes::@2/(byte*) line_cursor#7 ) + (byte) assert_byte::c#5 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#5 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#8 test_bytes::@2/(byte*) char_cursor#9 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) line_cursor#61 ← phi( assert_byte/(byte*) line_cursor#63 ) + (byte) assert_byte::c#4 ← phi( assert_byte/(byte) assert_byte::c#5 ) + (byte) assert_byte::b#4 ← phi( assert_byte/(byte) assert_byte::b#5 ) + (byte*) char_cursor#42 ← phi( assert_byte/(byte*) char_cursor#2 ) + (byte*) char_cursor#12 ← (byte*) char_cursor#42 + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) line_cursor#59 ← phi( assert_byte::@5/(byte*) line_cursor#61 ) + (byte) assert_byte::c#3 ← phi( assert_byte::@5/(byte) assert_byte::c#4 ) + (byte) assert_byte::b#3 ← phi( assert_byte::@5/(byte) assert_byte::b#4 ) + (byte*) char_cursor#43 ← phi( assert_byte::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#13 ← (byte*) char_cursor#43 + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) line_cursor#55 ← phi( assert_byte::@6/(byte*) line_cursor#59 ) + (byte*) char_cursor#66 ← phi( assert_byte::@6/(byte*) char_cursor#13 ) + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) line_cursor#50 ← phi( assert_byte::@1/(byte*) line_cursor#55 ) + (byte*) char_cursor#44 ← phi( assert_byte::@1/(byte*) char_cursor#2 ) + (byte*) char_cursor#14 ← (byte*) char_cursor#44 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + (byte*) line_cursor#56 ← phi( assert_byte::@6/(byte*) line_cursor#59 ) + (byte*) char_cursor#67 ← phi( assert_byte::@6/(byte*) char_cursor#13 ) + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) line_cursor#51 ← phi( assert_byte::@3/(byte*) line_cursor#56 ) + (byte*) char_cursor#45 ← phi( assert_byte::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#15 ← (byte*) char_cursor#45 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 ) + (byte*) line_cursor#45 ← phi( assert_byte::@7/(byte*) line_cursor#50 assert_byte::@8/(byte*) line_cursor#51 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) char_cursor#46 ← phi( assert_byte::@2/(byte*) char_cursor#4 ) + (byte*) line_cursor#31 ← phi( assert_byte::@2/(byte*) line_cursor#2 ) + (byte*) line_cursor#10 ← (byte*) line_cursor#31 + (byte*) char_cursor#16 ← (byte*) char_cursor#46 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + (byte*) line_cursor#32 ← phi( assert_byte::@9/(byte*) line_cursor#10 ) + (byte*) char_cursor#47 ← phi( assert_byte::@9/(byte*) char_cursor#16 ) + (byte*) char_cursor#17 ← (byte*) char_cursor#47 + (byte*) line_cursor#11 ← (byte*) line_cursor#32 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#3 ) + (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#5 ) + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bb#1 ← phi( test_sbytes/(signed byte) test_sbytes::bb#0 ) + (byte*) line_cursor#33 ← phi( test_sbytes/(byte*) line_cursor#19 ) + (byte*) char_cursor#48 ← phi( test_sbytes/(byte*) char_cursor#29 ) + (byte*) char_cursor#18 ← (byte*) char_cursor#48 + (byte*) line_cursor#12 ← (byte*) line_cursor#33 + (signed byte~) test_sbytes::$1 ← (signed byte) test_sbytes::bb#1 + (byte/signed byte/word/signed word) 2 + (signed byte) test_sbytes::bc#0 ← (signed byte~) test_sbytes::$1 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bc#1 ← phi( test_sbytes::@1/(signed byte) test_sbytes::bc#0 ) + (byte*) line_cursor#34 ← phi( test_sbytes::@1/(byte*) line_cursor#19 ) + (byte*) char_cursor#49 ← phi( test_sbytes::@1/(byte*) char_cursor#29 ) + (byte*) char_cursor#19 ← (byte*) char_cursor#49 + (byte*) line_cursor#13 ← (byte*) line_cursor#34 + (signed byte~) test_sbytes::$3 ← (signed byte) test_sbytes::bc#1 - (byte/signed byte/word/signed word) 4 + (signed byte) test_sbytes::bd#0 ← (signed byte~) test_sbytes::$3 + (signed byte/signed word~) test_sbytes::$4 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + (signed byte) assert_sbyte::c#2 ← (signed byte/signed word~) test_sbytes::$4 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::bd#1 ← phi( test_sbytes::@2/(signed byte) test_sbytes::bd#0 ) + (byte*) line_cursor#35 ← phi( test_sbytes::@2/(byte*) line_cursor#19 ) + (byte*) char_cursor#50 ← phi( test_sbytes::@2/(byte*) char_cursor#29 ) + (byte*) char_cursor#20 ← (byte*) char_cursor#50 + (byte*) line_cursor#14 ← (byte*) line_cursor#35 + (signed byte~) test_sbytes::$6 ← - (signed byte) test_sbytes::bd#1 + (signed byte) test_sbytes::be#0 ← (signed byte~) test_sbytes::$6 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) line_cursor#36 ← phi( test_sbytes::@3/(byte*) line_cursor#19 ) + (byte*) char_cursor#51 ← phi( test_sbytes::@3/(byte*) char_cursor#29 ) + (byte*) char_cursor#21 ← (byte*) char_cursor#51 + (byte*) line_cursor#15 ← (byte*) line_cursor#36 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte~) test_sbytes::$9 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte~) test_sbytes::$9 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) line_cursor#37 ← phi( test_sbytes::@4/(byte*) line_cursor#19 ) + (byte*) char_cursor#52 ← phi( test_sbytes::@4/(byte*) char_cursor#29 ) + (byte*) char_cursor#22 ← (byte*) char_cursor#52 + (byte*) line_cursor#16 ← (byte*) line_cursor#37 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + (byte*) line_cursor#38 ← phi( test_sbytes::@5/(byte*) line_cursor#16 ) + (byte*) char_cursor#53 ← phi( test_sbytes::@5/(byte*) char_cursor#22 ) + (byte*) char_cursor#23 ← (byte*) char_cursor#53 + (byte*) line_cursor#17 ← (byte*) line_cursor#38 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#64 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 ) + (signed byte) assert_sbyte::c#7 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#7 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) line_cursor#62 ← phi( assert_sbyte/(byte*) line_cursor#64 ) + (signed byte) assert_sbyte::c#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::c#7 ) + (signed byte) assert_sbyte::b#6 ← phi( assert_sbyte/(signed byte) assert_sbyte::b#7 ) + (byte*) char_cursor#54 ← phi( assert_sbyte/(byte*) char_cursor#2 ) + (byte*) char_cursor#24 ← (byte*) char_cursor#54 + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) line_cursor#60 ← phi( assert_sbyte::@5/(byte*) line_cursor#62 ) + (signed byte) assert_sbyte::c#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::c#6 ) + (signed byte) assert_sbyte::b#5 ← phi( assert_sbyte::@5/(signed byte) assert_sbyte::b#6 ) + (byte*) char_cursor#55 ← phi( assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) char_cursor#25 ← (byte*) char_cursor#55 + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) line_cursor#57 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 ) + (byte*) char_cursor#71 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 ) + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) line_cursor#52 ← phi( assert_sbyte::@1/(byte*) line_cursor#57 ) + (byte*) char_cursor#56 ← phi( assert_sbyte::@1/(byte*) char_cursor#2 ) + (byte*) char_cursor#26 ← (byte*) char_cursor#56 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) line_cursor#58 ← phi( assert_sbyte::@6/(byte*) line_cursor#60 ) + (byte*) char_cursor#72 ← phi( assert_sbyte::@6/(byte*) char_cursor#25 ) + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) line_cursor#53 ← phi( assert_sbyte::@3/(byte*) line_cursor#58 ) + (byte*) char_cursor#57 ← phi( assert_sbyte::@3/(byte*) char_cursor#2 ) + (byte*) char_cursor#27 ← (byte*) char_cursor#57 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 ) + (byte*) line_cursor#47 ← phi( assert_sbyte::@7/(byte*) line_cursor#52 assert_sbyte::@8/(byte*) line_cursor#53 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) char_cursor#58 ← phi( assert_sbyte::@2/(byte*) char_cursor#4 ) + (byte*) line_cursor#39 ← phi( assert_sbyte::@2/(byte*) line_cursor#2 ) + (byte*) line_cursor#18 ← (byte*) line_cursor#39 + (byte*) char_cursor#28 ← (byte*) char_cursor#58 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + (byte*) line_cursor#40 ← phi( assert_sbyte::@9/(byte*) line_cursor#18 ) + (byte*) char_cursor#59 ← phi( assert_sbyte::@9/(byte*) char_cursor#28 ) + (byte*) char_cursor#29 ← (byte*) char_cursor#59 + (byte*) line_cursor#19 ← (byte*) line_cursor#40 + return + to:@return +@11: scope:[] from @6 + (byte*) line_cursor#48 ← phi( @6/(byte*) line_cursor#54 ) + (byte*) char_cursor#74 ← phi( @6/(byte*) char_cursor#77 ) + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) line_cursor#41 ← phi( @11/(byte*) line_cursor#5 ) + (byte*) char_cursor#60 ← phi( @11/(byte*) char_cursor#7 ) + (byte*) char_cursor#30 ← (byte*) char_cursor#60 + (byte*) line_cursor#20 ← (byte*) line_cursor#41 + to:@end +@end: scope:[] from @12 + +Not aliassing across scopes: print_str::str#11 print_str::str#1 +Not aliassing across scopes: char_cursor#75 char_cursor#65 +Not aliassing across scopes: line_cursor#42 line_cursor#45 +Not aliassing across scopes: char_cursor#62 char_cursor#68 +Not aliassing across scopes: char_cursor#76 char_cursor#74 +Not aliassing across scopes: line_cursor#49 line_cursor#48 +Not aliassing across scopes: char_cursor#35 char_cursor#11 +Not aliassing across scopes: line_cursor#24 line_cursor#9 +Not aliassing across scopes: char_cursor#36 char_cursor#23 +Not aliassing across scopes: line_cursor#25 line_cursor#17 +Not aliassing across scopes: char_cursor#64 char_cursor#63 +Not aliassing across scopes: line_cursor#44 line_cursor#43 +Not aliassing across scopes: assert_byte::b#0 test_bytes::bb#0 +Not aliassing across scopes: char_cursor#38 char_cursor#17 +Not aliassing across scopes: line_cursor#27 line_cursor#11 +Not aliassing across scopes: assert_byte::b#1 test_bytes::bc#0 +Not aliassing across scopes: char_cursor#39 char_cursor#17 +Not aliassing across scopes: line_cursor#28 line_cursor#11 +Not aliassing across scopes: assert_byte::b#2 test_bytes::bd#0 +Not aliassing across scopes: char_cursor#40 char_cursor#17 +Not aliassing across scopes: line_cursor#29 line_cursor#11 +Not aliassing across scopes: assert_byte::msg#3 assert_byte::msg#0 +Not aliassing across scopes: char_cursor#65 char_cursor#64 +Not aliassing across scopes: assert_byte::b#5 assert_byte::b#0 +Not aliassing across scopes: assert_byte::c#5 assert_byte::c#0 +Not aliassing across scopes: line_cursor#63 line_cursor#44 +Not aliassing across scopes: print_str::str#1 assert_byte::msg#3 +Not aliassing across scopes: char_cursor#42 char_cursor#2 +Not aliassing across scopes: char_cursor#43 char_cursor#2 +Not aliassing across scopes: char_cursor#44 char_cursor#2 +Not aliassing across scopes: char_cursor#45 char_cursor#2 +Not aliassing across scopes: line_cursor#31 line_cursor#2 +Not aliassing across scopes: char_cursor#46 char_cursor#4 +Not aliassing across scopes: char_cursor#69 char_cursor#5 +Not aliassing across scopes: line_cursor#46 line_cursor#3 +Not aliassing across scopes: assert_sbyte::b#0 test_sbytes::bb#0 +Not aliassing across scopes: char_cursor#48 char_cursor#29 +Not aliassing across scopes: line_cursor#33 line_cursor#19 +Not aliassing across scopes: assert_sbyte::b#1 test_sbytes::bc#0 +Not aliassing across scopes: char_cursor#49 char_cursor#29 +Not aliassing across scopes: line_cursor#34 line_cursor#19 +Not aliassing across scopes: assert_sbyte::b#2 test_sbytes::bd#0 +Not aliassing across scopes: char_cursor#50 char_cursor#29 +Not aliassing across scopes: line_cursor#35 line_cursor#19 +Not aliassing across scopes: assert_sbyte::b#3 test_sbytes::be#0 +Not aliassing across scopes: char_cursor#51 char_cursor#29 +Not aliassing across scopes: line_cursor#36 line_cursor#19 +Not aliassing across scopes: assert_sbyte::b#4 test_sbytes::bf#0 +Not aliassing across scopes: char_cursor#52 char_cursor#29 +Not aliassing across scopes: line_cursor#37 line_cursor#19 +Not aliassing across scopes: assert_sbyte::msg#5 assert_sbyte::msg#0 +Not aliassing across scopes: char_cursor#70 char_cursor#69 +Not aliassing across scopes: assert_sbyte::b#7 assert_sbyte::b#0 +Not aliassing across scopes: assert_sbyte::c#7 assert_sbyte::c#0 +Not aliassing across scopes: line_cursor#64 line_cursor#46 +Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5 +Not aliassing across scopes: char_cursor#54 char_cursor#2 +Not aliassing across scopes: char_cursor#55 char_cursor#2 +Not aliassing across scopes: char_cursor#56 char_cursor#2 +Not aliassing across scopes: char_cursor#57 char_cursor#2 +Not aliassing across scopes: line_cursor#39 line_cursor#2 +Not aliassing across scopes: char_cursor#58 char_cursor#4 +Not aliassing across scopes: char_cursor#60 char_cursor#7 +Not aliassing across scopes: line_cursor#41 line_cursor#5 +Alias (byte*) char_cursor#0 = (byte*) line_cursor#0 (byte*) char_cursor#77 (byte*) line_cursor#54 (byte*) char_cursor#74 (byte*) line_cursor#48 +Alias (byte*) print_str::str#10 = (byte*) print_str::str#9 +Alias (byte*) char_cursor#2 = (byte*) char_cursor#31 (byte*) char_cursor#61 (byte*) char_cursor#32 +Alias (byte*) line_cursor#1 = (byte*~) print_ln::$0 (byte*) line_cursor#22 (byte*) char_cursor#3 (byte*) line_cursor#23 (byte*) char_cursor#34 (byte*) line_cursor#2 (byte*) char_cursor#4 +Alias (byte*) char_cursor#63 = (byte*) char_cursor#76 +Alias (byte*) line_cursor#43 = (byte*) line_cursor#49 +Alias (byte*) char_cursor#35 = (byte*) char_cursor#5 +Alias (byte*) line_cursor#24 = (byte*) line_cursor#3 +Alias (byte*) char_cursor#36 = (byte*) char_cursor#6 (byte*) char_cursor#37 (byte*) char_cursor#7 +Alias (byte*) line_cursor#25 = (byte*) line_cursor#4 (byte*) line_cursor#26 (byte*) line_cursor#5 +Alias (byte) test_bytes::bb#0 = (byte) test_bytes::bb#1 +Alias (byte*) char_cursor#38 = (byte*) char_cursor#8 +Alias (byte*) line_cursor#27 = (byte*) line_cursor#6 +Alias (byte) test_bytes::bc#0 = (byte~) test_bytes::$1 (byte) test_bytes::bc#1 +Alias (byte*) char_cursor#39 = (byte*) char_cursor#9 +Alias (byte*) line_cursor#28 = (byte*) line_cursor#7 +Alias (byte) test_bytes::bd#0 = (byte~) test_bytes::$3 +Alias (byte*) char_cursor#10 = (byte*) char_cursor#40 (byte*) char_cursor#41 (byte*) char_cursor#11 +Alias (byte*) line_cursor#29 = (byte*) line_cursor#8 (byte*) line_cursor#30 (byte*) line_cursor#9 +Alias (byte) assert_byte::b#3 = (byte) assert_byte::b#4 (byte) assert_byte::b#5 +Alias (byte) assert_byte::c#3 = (byte) assert_byte::c#4 (byte) assert_byte::c#5 +Alias (byte*) line_cursor#50 = (byte*) line_cursor#61 (byte*) line_cursor#63 (byte*) line_cursor#59 (byte*) line_cursor#55 (byte*) line_cursor#56 (byte*) line_cursor#51 +Alias (byte*) char_cursor#12 = (byte*) char_cursor#42 +Alias (byte*) char_cursor#13 = (byte*) char_cursor#43 (byte*) char_cursor#66 (byte*) char_cursor#67 +Alias (byte*) char_cursor#14 = (byte*) char_cursor#44 +Alias (byte*) char_cursor#15 = (byte*) char_cursor#45 +Alias (byte*) line_cursor#10 = (byte*) line_cursor#31 (byte*) line_cursor#32 (byte*) line_cursor#11 +Alias (byte*) char_cursor#16 = (byte*) char_cursor#46 (byte*) char_cursor#47 (byte*) char_cursor#17 +Alias (signed byte) test_sbytes::bb#0 = (signed byte) test_sbytes::bb#1 +Alias (byte*) char_cursor#18 = (byte*) char_cursor#48 +Alias (byte*) line_cursor#12 = (byte*) line_cursor#33 +Alias (signed byte) test_sbytes::bc#0 = (signed byte~) test_sbytes::$1 (signed byte) test_sbytes::bc#1 +Alias (byte*) char_cursor#19 = (byte*) char_cursor#49 +Alias (byte*) line_cursor#13 = (byte*) line_cursor#34 +Alias (signed byte) test_sbytes::bd#0 = (signed byte~) test_sbytes::$3 (signed byte) test_sbytes::bd#1 +Alias (signed byte) assert_sbyte::c#2 = (signed byte/signed word~) test_sbytes::$4 +Alias (byte*) char_cursor#20 = (byte*) char_cursor#50 +Alias (byte*) line_cursor#14 = (byte*) line_cursor#35 +Alias (signed byte) test_sbytes::be#0 = (signed byte~) test_sbytes::$6 +Alias (byte*) char_cursor#21 = (byte*) char_cursor#51 +Alias (byte*) line_cursor#15 = (byte*) line_cursor#36 +Alias (signed byte) test_sbytes::bf#0 = (signed byte~) test_sbytes::$9 +Alias (byte*) char_cursor#22 = (byte*) char_cursor#52 (byte*) char_cursor#53 (byte*) char_cursor#23 +Alias (byte*) line_cursor#16 = (byte*) line_cursor#37 (byte*) line_cursor#38 (byte*) line_cursor#17 +Alias (signed byte) assert_sbyte::b#5 = (signed byte) assert_sbyte::b#6 (signed byte) assert_sbyte::b#7 +Alias (signed byte) assert_sbyte::c#5 = (signed byte) assert_sbyte::c#6 (signed byte) assert_sbyte::c#7 +Alias (byte*) line_cursor#52 = (byte*) line_cursor#62 (byte*) line_cursor#64 (byte*) line_cursor#60 (byte*) line_cursor#57 (byte*) line_cursor#58 (byte*) line_cursor#53 +Alias (byte*) char_cursor#24 = (byte*) char_cursor#54 +Alias (byte*) char_cursor#25 = (byte*) char_cursor#55 (byte*) char_cursor#71 (byte*) char_cursor#72 +Alias (byte*) char_cursor#26 = (byte*) char_cursor#56 +Alias (byte*) char_cursor#27 = (byte*) char_cursor#57 +Alias (byte*) line_cursor#18 = (byte*) line_cursor#39 (byte*) line_cursor#40 (byte*) line_cursor#19 +Alias (byte*) char_cursor#28 = (byte*) char_cursor#58 (byte*) char_cursor#59 (byte*) char_cursor#29 +Alias (byte*) char_cursor#30 = (byte*) char_cursor#60 +Alias (byte*) line_cursor#20 = (byte*) line_cursor#41 +Succesful SSA optimization Pass2AliasElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#13 assert_byte::@3/(byte*) char_cursor#13 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#25 assert_sbyte::@3/(byte*) char_cursor#25 assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + (byte*) line_cursor#43 ← phi( @11/(byte*) char_cursor#0 ) + (byte*) char_cursor#63 ← phi( @11/(byte*) char_cursor#0 ) + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#29 ) + (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#10 ) + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#16 ) + (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#22 ) + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#10 ) + (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#16 ) + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#10 ) + (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#16 ) + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#10 ) + (byte*) char_cursor#10 ← phi( test_bytes::@2/(byte*) char_cursor#16 ) + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#50 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#27 test_bytes::@2/(byte*) line_cursor#28 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#38 test_bytes::@2/(byte*) char_cursor#39 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) char_cursor#12 ← phi( assert_byte/(byte*) char_cursor#2 ) + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) char_cursor#13 ← phi( assert_byte::@5/(byte*) char_cursor#2 ) + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) char_cursor#14 ← phi( assert_byte::@1/(byte*) char_cursor#2 ) + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) char_cursor#15 ← phi( assert_byte::@3/(byte*) char_cursor#2 ) + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 ) + (byte*) line_cursor#45 ← phi( assert_byte::@7/(byte*) line_cursor#50 assert_byte::@8/(byte*) line_cursor#50 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) char_cursor#16 ← phi( assert_byte::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#10 ← phi( assert_byte::@2/(byte*) line_cursor#1 ) + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#24 ) + (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#35 ) + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (byte*) line_cursor#12 ← phi( test_sbytes/(byte*) line_cursor#18 ) + (byte*) char_cursor#18 ← phi( test_sbytes/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (byte*) line_cursor#13 ← phi( test_sbytes::@1/(byte*) line_cursor#18 ) + (byte*) char_cursor#19 ← phi( test_sbytes::@1/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (byte*) line_cursor#14 ← phi( test_sbytes::@2/(byte*) line_cursor#18 ) + (byte*) char_cursor#20 ← phi( test_sbytes::@2/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) line_cursor#15 ← phi( test_sbytes::@3/(byte*) line_cursor#18 ) + (byte*) char_cursor#21 ← phi( test_sbytes::@3/(byte*) char_cursor#28 ) + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) line_cursor#16 ← phi( test_sbytes::@4/(byte*) line_cursor#18 ) + (byte*) char_cursor#22 ← phi( test_sbytes::@4/(byte*) char_cursor#28 ) + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#52 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 ) + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) char_cursor#24 ← phi( assert_sbyte/(byte*) char_cursor#2 ) + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) char_cursor#25 ← phi( assert_sbyte::@5/(byte*) char_cursor#2 ) + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) char_cursor#26 ← phi( assert_sbyte::@1/(byte*) char_cursor#2 ) + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) char_cursor#27 ← phi( assert_sbyte::@3/(byte*) char_cursor#2 ) + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 ) + (byte*) line_cursor#47 ← phi( assert_sbyte::@7/(byte*) line_cursor#52 assert_sbyte::@8/(byte*) line_cursor#52 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) char_cursor#28 ← phi( assert_sbyte::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#18 ← phi( assert_sbyte::@2/(byte*) line_cursor#1 ) + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) line_cursor#20 ← phi( @11/(byte*) line_cursor#25 ) + (byte*) char_cursor#30 ← phi( @11/(byte*) char_cursor#36 ) + to:@end +@end: scope:[] from @12 + +Not aliassing across scopes: print_str::str#11 print_str::str#1 +Not aliassing across scopes: char_cursor#75 char_cursor#65 +Not aliassing across scopes: line_cursor#42 line_cursor#45 +Not aliassing across scopes: char_cursor#62 char_cursor#68 +Not aliassing across scopes: char_cursor#63 char_cursor#0 +Not aliassing across scopes: line_cursor#43 char_cursor#0 +Not aliassing across scopes: char_cursor#35 char_cursor#10 +Not aliassing across scopes: line_cursor#24 line_cursor#29 +Not aliassing across scopes: char_cursor#36 char_cursor#22 +Not aliassing across scopes: line_cursor#25 line_cursor#16 +Not aliassing across scopes: char_cursor#64 char_cursor#63 +Not aliassing across scopes: line_cursor#44 line_cursor#43 +Not aliassing across scopes: assert_byte::b#0 test_bytes::bb#0 +Not aliassing across scopes: char_cursor#38 char_cursor#16 +Not aliassing across scopes: line_cursor#27 line_cursor#10 +Not aliassing across scopes: assert_byte::b#1 test_bytes::bc#0 +Not aliassing across scopes: char_cursor#39 char_cursor#16 +Not aliassing across scopes: line_cursor#28 line_cursor#10 +Not aliassing across scopes: assert_byte::b#2 test_bytes::bd#0 +Not aliassing across scopes: char_cursor#10 char_cursor#16 +Not aliassing across scopes: line_cursor#29 line_cursor#10 +Not aliassing across scopes: assert_byte::msg#3 assert_byte::msg#0 +Not aliassing across scopes: char_cursor#65 char_cursor#64 +Not aliassing across scopes: assert_byte::b#3 assert_byte::b#0 +Not aliassing across scopes: assert_byte::c#3 assert_byte::c#0 +Not aliassing across scopes: line_cursor#50 line_cursor#44 +Not aliassing across scopes: print_str::str#1 assert_byte::msg#3 +Not aliassing across scopes: char_cursor#12 char_cursor#2 +Not aliassing across scopes: char_cursor#13 char_cursor#2 +Not aliassing across scopes: char_cursor#14 char_cursor#2 +Not aliassing across scopes: char_cursor#15 char_cursor#2 +Not aliassing across scopes: line_cursor#10 line_cursor#1 +Not aliassing across scopes: char_cursor#16 line_cursor#1 +Not aliassing across scopes: char_cursor#69 char_cursor#35 +Not aliassing across scopes: line_cursor#46 line_cursor#24 +Not aliassing across scopes: assert_sbyte::b#0 test_sbytes::bb#0 +Not aliassing across scopes: char_cursor#18 char_cursor#28 +Not aliassing across scopes: line_cursor#12 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#1 test_sbytes::bc#0 +Not aliassing across scopes: char_cursor#19 char_cursor#28 +Not aliassing across scopes: line_cursor#13 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#2 test_sbytes::bd#0 +Not aliassing across scopes: char_cursor#20 char_cursor#28 +Not aliassing across scopes: line_cursor#14 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#3 test_sbytes::be#0 +Not aliassing across scopes: char_cursor#21 char_cursor#28 +Not aliassing across scopes: line_cursor#15 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#4 test_sbytes::bf#0 +Not aliassing across scopes: char_cursor#22 char_cursor#28 +Not aliassing across scopes: line_cursor#16 line_cursor#18 +Not aliassing across scopes: assert_sbyte::msg#5 assert_sbyte::msg#0 +Not aliassing across scopes: char_cursor#70 char_cursor#69 +Not aliassing across scopes: assert_sbyte::b#5 assert_sbyte::b#0 +Not aliassing across scopes: assert_sbyte::c#5 assert_sbyte::c#0 +Not aliassing across scopes: line_cursor#52 line_cursor#46 +Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5 +Not aliassing across scopes: char_cursor#24 char_cursor#2 +Not aliassing across scopes: char_cursor#25 char_cursor#2 +Not aliassing across scopes: char_cursor#26 char_cursor#2 +Not aliassing across scopes: char_cursor#27 char_cursor#2 +Not aliassing across scopes: line_cursor#18 line_cursor#1 +Not aliassing across scopes: char_cursor#28 line_cursor#1 +Not aliassing across scopes: char_cursor#30 char_cursor#36 +Not aliassing across scopes: line_cursor#20 line_cursor#25 +Alias (byte*) line_cursor#45 = (byte*) line_cursor#50 +Alias (byte*) line_cursor#47 = (byte*) line_cursor#52 +Succesful SSA optimization Pass2AliasElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#13 assert_byte::@3/(byte*) char_cursor#13 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#25 assert_sbyte::@3/(byte*) char_cursor#25 assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 print_ln::@1/(byte*) char_cursor#33 ) + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + (byte*) line_cursor#43 ← phi( @11/(byte*) char_cursor#0 ) + (byte*) char_cursor#63 ← phi( @11/(byte*) char_cursor#0 ) + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#29 ) + (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#10 ) + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#16 ) + (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#22 ) + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#10 ) + (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#16 ) + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#10 ) + (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#16 ) + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#10 ) + (byte*) char_cursor#10 ← phi( test_bytes::@2/(byte*) char_cursor#16 ) + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#27 test_bytes::@2/(byte*) line_cursor#28 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#38 test_bytes::@2/(byte*) char_cursor#39 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) char_cursor#12 ← phi( assert_byte/(byte*) char_cursor#2 ) + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) char_cursor#13 ← phi( assert_byte::@5/(byte*) char_cursor#2 ) + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) char_cursor#14 ← phi( assert_byte::@1/(byte*) char_cursor#2 ) + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) char_cursor#15 ← phi( assert_byte::@3/(byte*) char_cursor#2 ) + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) char_cursor#16 ← phi( assert_byte::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#10 ← phi( assert_byte::@2/(byte*) line_cursor#1 ) + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#24 ) + (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#35 ) + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (byte*) line_cursor#12 ← phi( test_sbytes/(byte*) line_cursor#18 ) + (byte*) char_cursor#18 ← phi( test_sbytes/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (byte*) line_cursor#13 ← phi( test_sbytes::@1/(byte*) line_cursor#18 ) + (byte*) char_cursor#19 ← phi( test_sbytes::@1/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (byte*) line_cursor#14 ← phi( test_sbytes::@2/(byte*) line_cursor#18 ) + (byte*) char_cursor#20 ← phi( test_sbytes::@2/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) line_cursor#15 ← phi( test_sbytes::@3/(byte*) line_cursor#18 ) + (byte*) char_cursor#21 ← phi( test_sbytes::@3/(byte*) char_cursor#28 ) + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) line_cursor#16 ← phi( test_sbytes::@4/(byte*) line_cursor#18 ) + (byte*) char_cursor#22 ← phi( test_sbytes::@4/(byte*) char_cursor#28 ) + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#47 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 ) + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) char_cursor#24 ← phi( assert_sbyte/(byte*) char_cursor#2 ) + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) char_cursor#25 ← phi( assert_sbyte::@5/(byte*) char_cursor#2 ) + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) char_cursor#26 ← phi( assert_sbyte::@1/(byte*) char_cursor#2 ) + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) char_cursor#27 ← phi( assert_sbyte::@3/(byte*) char_cursor#2 ) + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) char_cursor#28 ← phi( assert_sbyte::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#18 ← phi( assert_sbyte::@2/(byte*) line_cursor#1 ) + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) line_cursor#20 ← phi( @11/(byte*) line_cursor#25 ) + (byte*) char_cursor#30 ← phi( @11/(byte*) char_cursor#36 ) + to:@end +@end: scope:[] from @12 + +Not aliassing across scopes: print_str::str#11 print_str::str#1 +Not aliassing across scopes: char_cursor#75 char_cursor#65 +Not aliassing across scopes: line_cursor#42 line_cursor#45 +Not aliassing across scopes: char_cursor#62 char_cursor#68 +Not aliassing across scopes: char_cursor#63 char_cursor#0 +Not aliassing across scopes: line_cursor#43 char_cursor#0 +Not aliassing across scopes: char_cursor#35 char_cursor#10 +Not aliassing across scopes: line_cursor#24 line_cursor#29 +Not aliassing across scopes: char_cursor#36 char_cursor#22 +Not aliassing across scopes: line_cursor#25 line_cursor#16 +Not aliassing across scopes: char_cursor#64 char_cursor#63 +Not aliassing across scopes: line_cursor#44 line_cursor#43 +Not aliassing across scopes: assert_byte::b#0 test_bytes::bb#0 +Not aliassing across scopes: char_cursor#38 char_cursor#16 +Not aliassing across scopes: line_cursor#27 line_cursor#10 +Not aliassing across scopes: assert_byte::b#1 test_bytes::bc#0 +Not aliassing across scopes: char_cursor#39 char_cursor#16 +Not aliassing across scopes: line_cursor#28 line_cursor#10 +Not aliassing across scopes: assert_byte::b#2 test_bytes::bd#0 +Not aliassing across scopes: char_cursor#10 char_cursor#16 +Not aliassing across scopes: line_cursor#29 line_cursor#10 +Not aliassing across scopes: assert_byte::msg#3 assert_byte::msg#0 +Not aliassing across scopes: char_cursor#65 char_cursor#64 +Not aliassing across scopes: assert_byte::b#3 assert_byte::b#0 +Not aliassing across scopes: assert_byte::c#3 assert_byte::c#0 +Not aliassing across scopes: line_cursor#45 line_cursor#44 +Not aliassing across scopes: print_str::str#1 assert_byte::msg#3 +Not aliassing across scopes: char_cursor#12 char_cursor#2 +Not aliassing across scopes: char_cursor#13 char_cursor#2 +Not aliassing across scopes: char_cursor#14 char_cursor#2 +Not aliassing across scopes: char_cursor#15 char_cursor#2 +Not aliassing across scopes: line_cursor#10 line_cursor#1 +Not aliassing across scopes: char_cursor#16 line_cursor#1 +Not aliassing across scopes: char_cursor#69 char_cursor#35 +Not aliassing across scopes: line_cursor#46 line_cursor#24 +Not aliassing across scopes: assert_sbyte::b#0 test_sbytes::bb#0 +Not aliassing across scopes: char_cursor#18 char_cursor#28 +Not aliassing across scopes: line_cursor#12 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#1 test_sbytes::bc#0 +Not aliassing across scopes: char_cursor#19 char_cursor#28 +Not aliassing across scopes: line_cursor#13 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#2 test_sbytes::bd#0 +Not aliassing across scopes: char_cursor#20 char_cursor#28 +Not aliassing across scopes: line_cursor#14 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#3 test_sbytes::be#0 +Not aliassing across scopes: char_cursor#21 char_cursor#28 +Not aliassing across scopes: line_cursor#15 line_cursor#18 +Not aliassing across scopes: assert_sbyte::b#4 test_sbytes::bf#0 +Not aliassing across scopes: char_cursor#22 char_cursor#28 +Not aliassing across scopes: line_cursor#16 line_cursor#18 +Not aliassing across scopes: assert_sbyte::msg#5 assert_sbyte::msg#0 +Not aliassing across scopes: char_cursor#70 char_cursor#69 +Not aliassing across scopes: assert_sbyte::b#5 assert_sbyte::b#0 +Not aliassing across scopes: assert_sbyte::c#5 assert_sbyte::c#0 +Not aliassing across scopes: line_cursor#47 line_cursor#46 +Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5 +Not aliassing across scopes: char_cursor#24 char_cursor#2 +Not aliassing across scopes: char_cursor#25 char_cursor#2 +Not aliassing across scopes: char_cursor#26 char_cursor#2 +Not aliassing across scopes: char_cursor#27 char_cursor#2 +Not aliassing across scopes: line_cursor#18 line_cursor#1 +Not aliassing across scopes: char_cursor#28 line_cursor#1 +Not aliassing across scopes: char_cursor#30 char_cursor#36 +Not aliassing across scopes: line_cursor#20 line_cursor#25 +Self Phi Eliminated (byte*) char_cursor#33 +Succesful SSA optimization Pass2SelfPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#13 assert_byte::@3/(byte*) char_cursor#13 assert_byte::@5/(byte*) char_cursor#12 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#25 assert_sbyte::@3/(byte*) char_cursor#25 assert_sbyte::@5/(byte*) char_cursor#24 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) char_cursor#33 ← phi( print_ln/(byte*) char_cursor#62 ) + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#33 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + (byte*) line_cursor#43 ← phi( @11/(byte*) char_cursor#0 ) + (byte*) char_cursor#63 ← phi( @11/(byte*) char_cursor#0 ) + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + (byte*) line_cursor#24 ← phi( main::@1/(byte*) line_cursor#29 ) + (byte*) char_cursor#35 ← phi( main::@1/(byte*) char_cursor#10 ) + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) line_cursor#25 ← phi( main::@2/(byte*) line_cursor#16 ) + (byte*) char_cursor#36 ← phi( main::@2/(byte*) char_cursor#22 ) + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte*) line_cursor#44 ← phi( main::@1/(byte*) line_cursor#43 ) + (byte*) char_cursor#64 ← phi( main::@1/(byte*) char_cursor#63 ) + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte*) line_cursor#27 ← phi( test_bytes/(byte*) line_cursor#10 ) + (byte*) char_cursor#38 ← phi( test_bytes/(byte*) char_cursor#16 ) + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte*) line_cursor#28 ← phi( test_bytes::@1/(byte*) line_cursor#10 ) + (byte*) char_cursor#39 ← phi( test_bytes::@1/(byte*) char_cursor#16 ) + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + (byte*) line_cursor#29 ← phi( test_bytes::@2/(byte*) line_cursor#10 ) + (byte*) char_cursor#10 ← phi( test_bytes::@2/(byte*) char_cursor#16 ) + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(byte*) line_cursor#44 test_bytes::@1/(byte*) line_cursor#27 test_bytes::@2/(byte*) line_cursor#28 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#64 test_bytes::@1/(byte*) char_cursor#38 test_bytes::@2/(byte*) char_cursor#39 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) char_cursor#12 ← phi( assert_byte/(byte*) char_cursor#2 ) + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (byte*) char_cursor#13 ← phi( assert_byte::@5/(byte*) char_cursor#2 ) + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + (byte*) char_cursor#14 ← phi( assert_byte::@1/(byte*) char_cursor#2 ) + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + (byte*) char_cursor#15 ← phi( assert_byte::@3/(byte*) char_cursor#2 ) + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#14 assert_byte::@8/(byte*) char_cursor#15 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + (byte*) char_cursor#16 ← phi( assert_byte::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#10 ← phi( assert_byte::@2/(byte*) line_cursor#1 ) + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (byte*) line_cursor#46 ← phi( main::@2/(byte*) line_cursor#24 ) + (byte*) char_cursor#69 ← phi( main::@2/(byte*) char_cursor#35 ) + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (byte*) line_cursor#12 ← phi( test_sbytes/(byte*) line_cursor#18 ) + (byte*) char_cursor#18 ← phi( test_sbytes/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (byte*) line_cursor#13 ← phi( test_sbytes::@1/(byte*) line_cursor#18 ) + (byte*) char_cursor#19 ← phi( test_sbytes::@1/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (byte*) line_cursor#14 ← phi( test_sbytes::@2/(byte*) line_cursor#18 ) + (byte*) char_cursor#20 ← phi( test_sbytes::@2/(byte*) char_cursor#28 ) + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (byte*) line_cursor#15 ← phi( test_sbytes::@3/(byte*) line_cursor#18 ) + (byte*) char_cursor#21 ← phi( test_sbytes::@3/(byte*) char_cursor#28 ) + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + (byte*) line_cursor#16 ← phi( test_sbytes::@4/(byte*) line_cursor#18 ) + (byte*) char_cursor#22 ← phi( test_sbytes::@4/(byte*) char_cursor#28 ) + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#47 ← phi( test_sbytes/(byte*) line_cursor#46 test_sbytes::@1/(byte*) line_cursor#12 test_sbytes::@2/(byte*) line_cursor#13 test_sbytes::@3/(byte*) line_cursor#14 test_sbytes::@4/(byte*) line_cursor#15 ) + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) char_cursor#69 test_sbytes::@1/(byte*) char_cursor#18 test_sbytes::@2/(byte*) char_cursor#19 test_sbytes::@3/(byte*) char_cursor#20 test_sbytes::@4/(byte*) char_cursor#21 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) char_cursor#24 ← phi( assert_sbyte/(byte*) char_cursor#2 ) + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (byte*) char_cursor#25 ← phi( assert_sbyte::@5/(byte*) char_cursor#2 ) + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + (byte*) char_cursor#26 ← phi( assert_sbyte::@1/(byte*) char_cursor#2 ) + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + (byte*) char_cursor#27 ← phi( assert_sbyte::@3/(byte*) char_cursor#2 ) + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#26 assert_sbyte::@8/(byte*) char_cursor#27 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + (byte*) char_cursor#28 ← phi( assert_sbyte::@2/(byte*) line_cursor#1 ) + (byte*) line_cursor#18 ← phi( assert_sbyte::@2/(byte*) line_cursor#1 ) + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + (byte*) line_cursor#20 ← phi( @11/(byte*) line_cursor#25 ) + (byte*) char_cursor#30 ← phi( @11/(byte*) char_cursor#36 ) + to:@end +@end: scope:[] from @12 + +Redundant Phi (byte*) char_cursor#33 (byte*) char_cursor#62 +Redundant Phi (byte*) char_cursor#63 (byte*) char_cursor#0 +Redundant Phi (byte*) line_cursor#43 (byte*) char_cursor#0 +Redundant Phi (byte*) char_cursor#35 (byte*) char_cursor#10 +Redundant Phi (byte*) line_cursor#24 (byte*) line_cursor#29 +Redundant Phi (byte*) char_cursor#36 (byte*) char_cursor#22 +Redundant Phi (byte*) line_cursor#25 (byte*) line_cursor#16 +Redundant Phi (byte*) char_cursor#64 (byte*) char_cursor#63 +Redundant Phi (byte*) line_cursor#44 (byte*) line_cursor#43 +Redundant Phi (byte*) char_cursor#38 (byte*) char_cursor#16 +Redundant Phi (byte*) line_cursor#27 (byte*) line_cursor#10 +Redundant Phi (byte*) char_cursor#39 (byte*) char_cursor#16 +Redundant Phi (byte*) line_cursor#28 (byte*) line_cursor#10 +Redundant Phi (byte*) char_cursor#10 (byte*) char_cursor#16 +Redundant Phi (byte*) line_cursor#29 (byte*) line_cursor#10 +Redundant Phi (byte*) char_cursor#12 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#13 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#14 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#15 (byte*) char_cursor#2 +Redundant Phi (byte*) line_cursor#10 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#16 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#69 (byte*) char_cursor#35 +Redundant Phi (byte*) line_cursor#46 (byte*) line_cursor#24 +Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#28 +Redundant Phi (byte*) line_cursor#12 (byte*) line_cursor#18 +Redundant Phi (byte*) char_cursor#19 (byte*) char_cursor#28 +Redundant Phi (byte*) line_cursor#13 (byte*) line_cursor#18 +Redundant Phi (byte*) char_cursor#20 (byte*) char_cursor#28 +Redundant Phi (byte*) line_cursor#14 (byte*) line_cursor#18 +Redundant Phi (byte*) char_cursor#21 (byte*) char_cursor#28 +Redundant Phi (byte*) line_cursor#15 (byte*) line_cursor#18 +Redundant Phi (byte*) char_cursor#22 (byte*) char_cursor#28 +Redundant Phi (byte*) line_cursor#16 (byte*) line_cursor#18 +Redundant Phi (byte*) char_cursor#24 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#25 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#26 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#27 (byte*) char_cursor#2 +Redundant Phi (byte*) line_cursor#18 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#28 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#30 (byte*) char_cursor#36 +Redundant Phi (byte*) line_cursor#20 (byte*) line_cursor#25 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) char_cursor#70 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#68 assert_sbyte::@2/(byte*) char_cursor#73 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#47 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#62 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + (byte*) char_cursor#68 ← phi( assert_byte::@7/(byte*) char_cursor#2 assert_byte::@8/(byte*) char_cursor#2 ) + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (byte*) line_cursor#47 ← phi( test_sbytes/(byte*) line_cursor#1 test_sbytes::@1/(byte*) line_cursor#1 test_sbytes::@2/(byte*) line_cursor#1 test_sbytes::@3/(byte*) line_cursor#1 test_sbytes::@4/(byte*) line_cursor#1 ) + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) char_cursor#70 ← phi( test_sbytes/(byte*) line_cursor#1 test_sbytes::@1/(byte*) line_cursor#1 test_sbytes::@2/(byte*) line_cursor#1 test_sbytes::@3/(byte*) line_cursor#1 test_sbytes::@4/(byte*) line_cursor#1 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + (byte*) char_cursor#73 ← phi( assert_sbyte::@7/(byte*) char_cursor#2 assert_sbyte::@8/(byte*) char_cursor#2 ) + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Redundant Phi (byte*) char_cursor#68 (byte*) char_cursor#2 +Redundant Phi (byte*) char_cursor#70 (byte*) line_cursor#1 +Redundant Phi (byte*) line_cursor#47 (byte*) line_cursor#1 +Redundant Phi (byte*) char_cursor#73 (byte*) char_cursor#2 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) char_cursor#62 ← phi( assert_byte::@2/(byte*) char_cursor#2 assert_sbyte::@2/(byte*) char_cursor#2 ) + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#62 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Redundant Phi (byte*) char_cursor#62 (byte*) char_cursor#2 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + (boolean~) print_str::$0 ← *((byte*) print_str::str#10) != (byte) '@' + if((boolean~) print_str::$0) goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + (boolean~) print_ln::$1 ← (byte*) line_cursor#1 < (byte*) char_cursor#2 + if((boolean~) print_ln::$1) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + (boolean~) print_cls::$1 ← (byte*) print_cls::sc#1 != (word/signed word~) print_cls::$0 + if((boolean~) print_cls::$1) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + (boolean~) assert_byte::$3 ← (byte) assert_byte::b#3 == (byte) assert_byte::c#3 + if((boolean~) assert_byte::$3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + (boolean~) assert_sbyte::$3 ← (signed byte) assert_sbyte::b#5 == (signed byte) assert_sbyte::c#5 + if((boolean~) assert_sbyte::$3) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Simple Condition (boolean~) print_str::$0 if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 +Simple Condition (boolean~) print_ln::$1 if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 +Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(word/signed word~) print_cls::$0) goto print_cls::@1 +Simple Condition (boolean~) assert_byte::$3 if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 +Simple Condition (boolean~) assert_sbyte::$3 if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 +Succesful SSA optimization Pass2ConditionalJumpSimplification +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) char_cursor#0 ← ((byte*)) (word/signed word) 1024 + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(byte*) print_str::str#3 assert_byte::@3/(byte*) print_str::str#4 assert_byte::@5/(byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(byte*) print_str::str#7 assert_sbyte::@3/(byte*) print_str::str#8 assert_sbyte::@5/(byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + (byte*) print_cls::sc#0 ← ((byte*)) (word/signed word) 1024 + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + (word/signed word~) print_cls::$0 ← (word/signed word) 1024 + (word/signed word) 1000 + if((byte*) print_cls::sc#1!=(word/signed word~) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + (byte*) BGCOL#0 ← ((byte*)) (word) 53281 + (byte) GREEN#0 ← (byte/signed byte/word/signed word) 5 + (byte) RED#0 ← (byte/signed byte/word/signed word) 2 + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((byte*) BGCOL#0) ← (byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte) test_bytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_byte::msg#0 ← (const byte[]) test_bytes::msg + (byte) assert_byte::b#0 ← (byte) test_bytes::bb#0 + (byte) assert_byte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bc#0 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_byte::msg#1 ← (const byte[]) test_bytes::msg1 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + (byte) assert_byte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte*) assert_byte::msg#2 ← (const byte[]) test_bytes::msg2 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + (byte) assert_byte::c#2 ← (byte/word/signed word) 254 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte) assert_byte::c#0 test_bytes::@1/(byte) assert_byte::c#1 test_bytes::@2/(byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(byte*) assert_byte::msg#0 test_bytes::@1/(byte*) assert_byte::msg#1 test_bytes::@2/(byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*) print_str::str#2 ← (const byte[]) assert_byte::str + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*) print_str::str#3 ← (const byte[]) assert_byte::str1 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#4 ← (const byte[]) assert_byte::str2 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (signed byte) test_sbytes::bb#0 ← (byte/signed byte/word/signed word) 0 + (byte*) assert_sbyte::msg#0 ← (const byte[]) test_sbytes::msg + (signed byte) assert_sbyte::b#0 ← (signed byte) test_sbytes::bb#0 + (signed byte) assert_sbyte::c#0 ← (byte/signed byte/word/signed word) 0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bc#0 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#1 ← (const byte[]) test_sbytes::msg1 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + (signed byte) assert_sbyte::c#1 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::c#2 ← - (byte/signed byte/word/signed word) 2 + (byte*) assert_sbyte::msg#2 ← (const byte[]) test_sbytes::msg2 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (byte*) assert_sbyte::msg#3 ← (const byte[]) test_sbytes::msg3 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + (signed byte) assert_sbyte::c#3 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (signed byte/signed word~) test_sbytes::$8 ← - (byte/signed byte/word/signed word) 127 + (signed byte) test_sbytes::bf#0 ← (signed byte/signed word~) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (byte*) assert_sbyte::msg#4 ← (const byte[]) test_sbytes::msg4 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + (signed byte) assert_sbyte::c#4 ← (byte/signed byte/word/signed word) 2 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(signed byte) assert_sbyte::c#0 test_sbytes::@1/(signed byte) assert_sbyte::c#1 test_sbytes::@2/(signed byte) assert_sbyte::c#2 test_sbytes::@3/(signed byte) assert_sbyte::c#3 test_sbytes::@4/(signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(byte*) assert_sbyte::msg#0 test_sbytes::@1/(byte*) assert_sbyte::msg#1 test_sbytes::@2/(byte*) assert_sbyte::msg#2 test_sbytes::@3/(byte*) assert_sbyte::msg#3 test_sbytes::@4/(byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*) print_str::str#6 ← (const byte[]) assert_sbyte::str + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*) print_str::str#7 ← (const byte[]) assert_sbyte::str1 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((byte*) BGCOL#0) ← (byte) RED#0 + (byte*) print_str::str#8 ← (const byte[]) assert_sbyte::str2 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Constant (const byte*) char_cursor#0 = ((byte*))1024 +Constant (const byte*) print_cls::sc#0 = ((byte*))1024 +Constant (const word/signed word) print_cls::$0 = 1024+1000 +Constant (const byte*) BGCOL#0 = ((byte*))53281 +Constant (const byte) GREEN#0 = 5 +Constant (const byte) RED#0 = 2 +Constant (const byte) test_bytes::bb#0 = 0 +Constant (const byte*) assert_byte::msg#0 = test_bytes::msg +Constant (const byte) assert_byte::c#0 = 0 +Constant (const byte*) assert_byte::msg#1 = test_bytes::msg1 +Constant (const byte) assert_byte::c#1 = 2 +Constant (const byte*) assert_byte::msg#2 = test_bytes::msg2 +Constant (const byte) assert_byte::c#2 = 254 +Constant (const byte*) print_str::str#2 = assert_byte::str +Constant (const byte*) print_str::str#3 = assert_byte::str1 +Constant (const byte*) print_str::str#4 = assert_byte::str2 +Constant (const signed byte) test_sbytes::bb#0 = 0 +Constant (const byte*) assert_sbyte::msg#0 = test_sbytes::msg +Constant (const signed byte) assert_sbyte::c#0 = 0 +Constant (const byte*) assert_sbyte::msg#1 = test_sbytes::msg1 +Constant (const signed byte) assert_sbyte::c#1 = 2 +Constant (const signed byte) assert_sbyte::c#2 = -2 +Constant (const byte*) assert_sbyte::msg#2 = test_sbytes::msg2 +Constant (const byte*) assert_sbyte::msg#3 = test_sbytes::msg3 +Constant (const signed byte) assert_sbyte::c#3 = 2 +Constant (const signed byte/signed word) test_sbytes::$8 = -127 +Constant (const byte*) assert_sbyte::msg#4 = test_sbytes::msg4 +Constant (const signed byte) assert_sbyte::c#4 = 2 +Constant (const byte*) print_str::str#6 = assert_sbyte::str +Constant (const byte*) print_str::str#7 = assert_sbyte::str1 +Constant (const byte*) print_str::str#8 = assert_sbyte::str2 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte*) print_str::str#3 assert_byte::@3/(const byte*) print_str::str#4 assert_byte::@5/(const byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte*) print_str::str#7 assert_sbyte::@3/(const byte*) print_str::str#8 assert_sbyte::@5/(const byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(const word/signed word) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + (byte) assert_byte::b#0 ← (const byte) test_bytes::bb#0 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) test_bytes::bc#0 ← (const byte) test_bytes::bb#0 + (byte/signed byte/word/signed word) 2 + (byte) assert_byte::b#1 ← (byte) test_bytes::bc#0 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bd#0 ← (byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(const byte) assert_byte::c#0 test_bytes::@1/(const byte) assert_byte::c#1 test_bytes::@2/(const byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte*) assert_byte::msg#0 test_bytes::@1/(const byte*) assert_byte::msg#1 test_bytes::@2/(const byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + (signed byte) assert_sbyte::b#0 ← (const signed byte) test_sbytes::bb#0 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) test_sbytes::bc#0 ← (const signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word) 2 + (signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bd#0 ← (signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (signed byte) test_sbytes::bf#0 ← (const signed byte/signed word) test_sbytes::$8 - (byte/signed byte/word/signed word) 127 + (signed byte) assert_sbyte::b#4 ← (signed byte) test_sbytes::bf#0 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::c#0 test_sbytes::@1/(const signed byte) assert_sbyte::c#1 test_sbytes::@2/(const signed byte) assert_sbyte::c#2 test_sbytes::@3/(const signed byte) assert_sbyte::c#3 test_sbytes::@4/(const signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte*) assert_sbyte::msg#0 test_sbytes::@1/(const byte*) assert_sbyte::msg#1 test_sbytes::@2/(const byte*) assert_sbyte::msg#2 test_sbytes::@3/(const byte*) assert_sbyte::msg#3 test_sbytes::@4/(const byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Constant (const byte) assert_byte::b#0 = test_bytes::bb#0 +Constant (const byte) test_bytes::bc#0 = test_bytes::bb#0+2 +Constant (const signed byte) assert_sbyte::b#0 = test_sbytes::bb#0 +Constant (const signed byte) test_sbytes::bc#0 = test_sbytes::bb#0+2 +Constant (const signed byte) test_sbytes::bf#0 = test_sbytes::$8-127 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte*) print_str::str#3 assert_byte::@3/(const byte*) print_str::str#4 assert_byte::@5/(const byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte*) print_str::str#7 assert_sbyte::@3/(const byte*) print_str::str#8 assert_sbyte::@5/(const byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(const word/signed word) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte) assert_byte::b#1 ← (const byte) test_bytes::bc#0 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) test_bytes::bd#0 ← (const byte) test_bytes::bc#0 - (byte/signed byte/word/signed word) 4 + (byte) assert_byte::b#2 ← (byte) test_bytes::bd#0 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(const byte) assert_byte::c#0 test_bytes::@1/(const byte) assert_byte::c#1 test_bytes::@2/(const byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) assert_byte::b#0 test_bytes::@1/(byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte*) assert_byte::msg#0 test_bytes::@1/(const byte*) assert_byte::msg#1 test_bytes::@2/(const byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + (signed byte) assert_sbyte::b#1 ← (const signed byte) test_sbytes::bc#0 + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) test_sbytes::bd#0 ← (const signed byte) test_sbytes::bc#0 - (byte/signed byte/word/signed word) 4 + (signed byte) assert_sbyte::b#2 ← (signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (signed byte) test_sbytes::bd#0 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + (signed byte) assert_sbyte::b#4 ← (const signed byte) test_sbytes::bf#0 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::c#0 test_sbytes::@1/(const signed byte) assert_sbyte::c#1 test_sbytes::@2/(const signed byte) assert_sbyte::c#2 test_sbytes::@3/(const signed byte) assert_sbyte::c#3 test_sbytes::@4/(const signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::b#0 test_sbytes::@1/(signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte*) assert_sbyte::msg#0 test_sbytes::@1/(const byte*) assert_sbyte::msg#1 test_sbytes::@2/(const byte*) assert_sbyte::msg#2 test_sbytes::@3/(const byte*) assert_sbyte::msg#3 test_sbytes::@4/(const byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Constant (const byte) assert_byte::b#1 = test_bytes::bc#0 +Constant (const byte) test_bytes::bd#0 = test_bytes::bc#0-4 +Constant (const signed byte) assert_sbyte::b#1 = test_sbytes::bc#0 +Constant (const signed byte) test_sbytes::bd#0 = test_sbytes::bc#0-4 +Constant (const signed byte) assert_sbyte::b#4 = test_sbytes::bf#0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte*) print_str::str#3 assert_byte::@3/(const byte*) print_str::str#4 assert_byte::@5/(const byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte*) print_str::str#7 assert_sbyte::@3/(const byte*) print_str::str#8 assert_sbyte::@5/(const byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(const word/signed word) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte) assert_byte::b#2 ← (const byte) test_bytes::bd#0 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(const byte) assert_byte::c#0 test_bytes::@1/(const byte) assert_byte::c#1 test_bytes::@2/(const byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) assert_byte::b#0 test_bytes::@1/(const byte) assert_byte::b#1 test_bytes::@2/(byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte*) assert_byte::msg#0 test_bytes::@1/(const byte*) assert_byte::msg#1 test_bytes::@2/(const byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + (signed byte) assert_sbyte::b#2 ← (const signed byte) test_sbytes::bd#0 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) test_sbytes::be#0 ← - (const signed byte) test_sbytes::bd#0 + (signed byte) assert_sbyte::b#3 ← (signed byte) test_sbytes::be#0 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::c#0 test_sbytes::@1/(const signed byte) assert_sbyte::c#1 test_sbytes::@2/(const signed byte) assert_sbyte::c#2 test_sbytes::@3/(const signed byte) assert_sbyte::c#3 test_sbytes::@4/(const signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::b#0 test_sbytes::@1/(const signed byte) assert_sbyte::b#1 test_sbytes::@2/(signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(const signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte*) assert_sbyte::msg#0 test_sbytes::@1/(const byte*) assert_sbyte::msg#1 test_sbytes::@2/(const byte*) assert_sbyte::msg#2 test_sbytes::@3/(const byte*) assert_sbyte::msg#3 test_sbytes::@4/(const byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Constant (const byte) assert_byte::b#2 = test_bytes::bd#0 +Constant (const signed byte) assert_sbyte::b#2 = test_sbytes::bd#0 +Constant (const signed byte) test_sbytes::be#0 = -test_sbytes::bd#0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte*) print_str::str#3 assert_byte::@3/(const byte*) print_str::str#4 assert_byte::@5/(const byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte*) print_str::str#7 assert_sbyte::@3/(const byte*) print_str::str#8 assert_sbyte::@5/(const byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(const word/signed word) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(const byte) assert_byte::c#0 test_bytes::@1/(const byte) assert_byte::c#1 test_bytes::@2/(const byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) assert_byte::b#0 test_bytes::@1/(const byte) assert_byte::b#1 test_bytes::@2/(const byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte*) assert_byte::msg#0 test_bytes::@1/(const byte*) assert_byte::msg#1 test_bytes::@2/(const byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + (signed byte) assert_sbyte::b#3 ← (const signed byte) test_sbytes::be#0 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::c#0 test_sbytes::@1/(const signed byte) assert_sbyte::c#1 test_sbytes::@2/(const signed byte) assert_sbyte::c#2 test_sbytes::@3/(const signed byte) assert_sbyte::c#3 test_sbytes::@4/(const signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::b#0 test_sbytes::@1/(const signed byte) assert_sbyte::b#1 test_sbytes::@2/(const signed byte) assert_sbyte::b#2 test_sbytes::@3/(signed byte) assert_sbyte::b#3 test_sbytes::@4/(const signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte*) assert_sbyte::msg#0 test_sbytes::@1/(const byte*) assert_sbyte::msg#1 test_sbytes::@2/(const byte*) assert_sbyte::msg#2 test_sbytes::@3/(const byte*) assert_sbyte::msg#3 test_sbytes::@4/(const byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@6 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte*) print_str::str#3 assert_byte::@3/(const byte*) print_str::str#4 assert_byte::@5/(const byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte*) print_str::str#7 assert_sbyte::@3/(const byte*) print_str::str#8 assert_sbyte::@5/(const byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@2 +print_ln::@2: scope:[print_ln] from print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@2 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(const word/signed word) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +@6: scope:[] from @begin + to:@11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@3 +main::@3: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + call assert_byte param-assignment + to:test_bytes::@3 +test_bytes::@3: scope:[test_bytes] from test_bytes::@2 + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@3 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(const byte) assert_byte::c#0 test_bytes::@1/(const byte) assert_byte::c#1 test_bytes::@2/(const byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) assert_byte::b#0 test_bytes::@1/(const byte) assert_byte::b#1 test_bytes::@2/(const byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte*) assert_byte::msg#0 test_bytes::@1/(const byte*) assert_byte::msg#1 test_bytes::@2/(const byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@7 +assert_byte::@7: scope:[assert_byte] from assert_byte::@1 + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@8 +assert_byte::@8: scope:[assert_byte] from assert_byte::@3 + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@7 assert_byte::@8 + call print_ln param-assignment + to:assert_byte::@9 +assert_byte::@9: scope:[assert_byte] from assert_byte::@2 + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@9 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + call assert_sbyte param-assignment + to:test_sbytes::@5 +test_sbytes::@5: scope:[test_sbytes] from test_sbytes::@4 + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@5 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::c#0 test_sbytes::@1/(const signed byte) assert_sbyte::c#1 test_sbytes::@2/(const signed byte) assert_sbyte::c#2 test_sbytes::@3/(const signed byte) assert_sbyte::c#3 test_sbytes::@4/(const signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::b#0 test_sbytes::@1/(const signed byte) assert_sbyte::b#1 test_sbytes::@2/(const signed byte) assert_sbyte::b#2 test_sbytes::@3/(const signed byte) assert_sbyte::b#3 test_sbytes::@4/(const signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte*) assert_sbyte::msg#0 test_sbytes::@1/(const byte*) assert_sbyte::msg#1 test_sbytes::@2/(const byte*) assert_sbyte::msg#2 test_sbytes::@3/(const byte*) assert_sbyte::msg#3 test_sbytes::@4/(const byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@7 +assert_sbyte::@7: scope:[assert_sbyte] from assert_sbyte::@1 + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@8 +assert_sbyte::@8: scope:[assert_sbyte] from assert_sbyte::@3 + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@7 assert_sbyte::@8 + call print_ln param-assignment + to:assert_sbyte::@9 +assert_sbyte::@9: scope:[assert_sbyte] from assert_sbyte::@2 + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@9 + return + to:@return +@11: scope:[] from @6 + call main param-assignment + to:@12 +@12: scope:[] from @11 + to:@end +@end: scope:[] from @12 + +Culled Empty Block (label) print_ln::@2 +Culled Empty Block (label) @6 +Culled Empty Block (label) main::@3 +Culled Empty Block (label) test_bytes::@3 +Culled Empty Block (label) assert_byte::@7 +Culled Empty Block (label) assert_byte::@8 +Culled Empty Block (label) assert_byte::@9 +Culled Empty Block (label) test_sbytes::@5 +Culled Empty Block (label) assert_sbyte::@7 +Culled Empty Block (label) assert_sbyte::@8 +Culled Empty Block (label) assert_sbyte::@9 +Culled Empty Block (label) @12 +Succesful SSA optimization Pass2CullEmptyBlocks +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@11 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte*) print_str::str#3 assert_byte::@3/(const byte*) print_str::str#4 assert_byte::@5/(const byte*) print_str::str#2 assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte*) print_str::str#7 assert_sbyte::@3/(const byte*) print_str::str#8 assert_sbyte::@5/(const byte*) print_str::str#6 ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(const word/signed word) print_cls::$0) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + call assert_byte param-assignment + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(const byte) assert_byte::c#0 test_bytes::@1/(const byte) assert_byte::c#1 test_bytes::@2/(const byte) assert_byte::c#2 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) assert_byte::b#0 test_bytes::@1/(const byte) assert_byte::b#1 test_bytes::@2/(const byte) assert_byte::b#2 ) + (byte*) char_cursor#65 ← phi( test_bytes/(const byte*) char_cursor#0 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte*) assert_byte::msg#0 test_bytes::@1/(const byte*) assert_byte::msg#1 test_bytes::@2/(const byte*) assert_byte::msg#2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + call print_ln param-assignment + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + call assert_sbyte param-assignment + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::c#0 test_sbytes::@1/(const signed byte) assert_sbyte::c#1 test_sbytes::@2/(const signed byte) assert_sbyte::c#2 test_sbytes::@3/(const signed byte) assert_sbyte::c#3 test_sbytes::@4/(const signed byte) assert_sbyte::c#4 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) assert_sbyte::b#0 test_sbytes::@1/(const signed byte) assert_sbyte::b#1 test_sbytes::@2/(const signed byte) assert_sbyte::b#2 test_sbytes::@3/(const signed byte) assert_sbyte::b#3 test_sbytes::@4/(const signed byte) assert_sbyte::b#4 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte*) assert_sbyte::msg#0 test_sbytes::@1/(const byte*) assert_sbyte::msg#1 test_sbytes::@2/(const byte*) assert_sbyte::msg#2 test_sbytes::@3/(const byte*) assert_sbyte::msg#3 test_sbytes::@4/(const byte*) assert_sbyte::msg#4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + call print_ln param-assignment + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + return + to:@return +@11: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @11 + +Not aliassing across scopes: print_str::str#11 print_str::str#1 +Not aliassing across scopes: char_cursor#75 char_cursor#65 +Not aliassing across scopes: line_cursor#42 line_cursor#45 +Not aliassing across scopes: print_str::str#1 assert_byte::msg#3 +Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5 +Not aliassing across scopes: print_str::str#11 print_str::str#1 +Not aliassing across scopes: char_cursor#75 char_cursor#65 +Not aliassing across scopes: line_cursor#42 line_cursor#45 +Not aliassing across scopes: print_str::str#1 assert_byte::msg#3 +Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_cls::sc#0 +Inlining constant with var siblings (const byte*) print_cls::sc#0 +Inlining constant with var siblings (const byte*) assert_byte::msg#0 +Inlining constant with var siblings (const byte) assert_byte::c#0 +Inlining constant with different constant siblings (const byte) assert_byte::c#0 +Inlining constant with different constant siblings (const byte) assert_byte::c#0 +Inlining constant with var siblings (const byte*) assert_byte::msg#1 +Inlining constant with var siblings (const byte) assert_byte::c#1 +Inlining constant with different constant siblings (const byte) assert_byte::c#1 +Inlining constant with different constant siblings (const byte) assert_byte::c#1 +Inlining constant with var siblings (const byte*) assert_byte::msg#2 +Inlining constant with var siblings (const byte) assert_byte::c#2 +Inlining constant with different constant siblings (const byte) assert_byte::c#2 +Inlining constant with different constant siblings (const byte) assert_byte::c#2 +Inlining constant with var siblings (const byte) assert_byte::b#0 +Inlining constant with var siblings (const byte) assert_byte::b#1 +Inlining constant with var siblings (const byte) assert_byte::b#2 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#0 +Inlining constant with var siblings (const signed byte) assert_sbyte::c#0 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#1 +Inlining constant with var siblings (const signed byte) assert_sbyte::c#1 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#1 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#1 +Inlining constant with var siblings (const signed byte) assert_sbyte::c#2 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#2 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#3 +Inlining constant with var siblings (const signed byte) assert_sbyte::c#3 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#3 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#3 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#4 +Inlining constant with var siblings (const signed byte) assert_sbyte::c#4 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#4 +Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#4 +Inlining constant with var siblings (const signed byte) assert_sbyte::b#0 +Inlining constant with var siblings (const signed byte) assert_sbyte::b#1 +Inlining constant with var siblings (const signed byte) assert_sbyte::b#4 +Inlining constant with var siblings (const signed byte) assert_sbyte::b#2 +Inlining constant with var siblings (const signed byte) assert_sbyte::b#3 +Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Inlining constant with var siblings (const byte*) char_cursor#0 +Constant inlined print_cls::$0 = (word/signed word) 1024+(word/signed word) 1000 +Constant inlined assert_sbyte::b#2 = (const signed byte) test_sbytes::bd#0 +Constant inlined assert_sbyte::c#1 = (byte/signed byte/word/signed word) 2 +Constant inlined assert_sbyte::b#1 = (const signed byte) test_sbytes::bc#0 +Constant inlined assert_sbyte::c#0 = (byte/signed byte/word/signed word) 0 +Constant inlined assert_byte::b#0 = (const byte) test_bytes::bb#0 +Constant inlined assert_sbyte::b#0 = (const signed byte) test_sbytes::bb#0 +Constant inlined assert_byte::b#1 = (const byte) test_bytes::bc#0 +Constant inlined assert_byte::c#0 = (byte/signed byte/word/signed word) 0 +Constant inlined assert_byte::b#2 = (const byte) test_bytes::bd#0 +Constant inlined assert_byte::c#1 = (byte/signed byte/word/signed word) 2 +Constant inlined assert_byte::c#2 = (byte/word/signed word) 254 +Constant inlined assert_sbyte::c#4 = (byte/signed byte/word/signed word) 2 +Constant inlined assert_sbyte::b#4 = (const signed byte) test_sbytes::bf#0 +Constant inlined assert_sbyte::c#3 = (byte/signed byte/word/signed word) 2 +Constant inlined assert_sbyte::b#3 = (const signed byte) test_sbytes::be#0 +Constant inlined assert_sbyte::c#2 = -(byte/signed byte/word/signed word) 2 +Constant inlined test_sbytes::$8 = -(byte/signed byte/word/signed word) 127 +Constant inlined assert_byte::msg#0 = (const byte[]) test_bytes::msg +Constant inlined assert_byte::msg#1 = (const byte[]) test_bytes::msg1 +Constant inlined assert_byte::msg#2 = (const byte[]) test_bytes::msg2 +Constant inlined assert_sbyte::msg#0 = (const byte[]) test_sbytes::msg +Constant inlined assert_sbyte::msg#1 = (const byte[]) test_sbytes::msg1 +Constant inlined assert_sbyte::msg#2 = (const byte[]) test_sbytes::msg2 +Constant inlined assert_sbyte::msg#3 = (const byte[]) test_sbytes::msg3 +Constant inlined print_cls::sc#0 = ((byte*))(word/signed word) 1024 +Constant inlined print_str::str#4 = (const byte[]) assert_byte::str2 +Constant inlined assert_sbyte::msg#4 = (const byte[]) test_sbytes::msg4 +Constant inlined print_str::str#3 = (const byte[]) assert_byte::str1 +Constant inlined print_str::str#2 = (const byte[]) assert_byte::str +Constant inlined char_cursor#0 = ((byte*))(word/signed word) 1024 +Constant inlined print_str::str#8 = (const byte[]) assert_sbyte::str2 +Constant inlined print_str::str#7 = (const byte[]) assert_sbyte::str1 +Constant inlined print_str::str#6 = (const byte[]) assert_sbyte::str +Succesful SSA optimization Pass2ConstantInlining +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@11 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*) line_cursor#1 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte[]) assert_byte::str1 assert_byte::@3/(const byte[]) assert_byte::str2 assert_byte::@5/(const byte[]) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte[]) assert_sbyte::str1 assert_sbyte::@3/(const byte[]) assert_sbyte::str2 assert_sbyte::@5/(const byte[]) assert_sbyte::str ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + to:print_str::@1 +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + return + to:@return +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + call assert_byte param-assignment + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word) 0 test_bytes::@1/(byte/signed byte/word/signed word) 2 test_bytes::@2/(byte/word/signed word) 254 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) + (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte[]) test_bytes::msg test_bytes::@1/(const byte[]) test_bytes::msg1 test_bytes::@2/(const byte[]) test_bytes::msg2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + call print_str param-assignment + to:assert_byte::@2 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + call print_ln param-assignment + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + call assert_sbyte param-assignment + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word) 0 test_sbytes::@1/(byte/signed byte/word/signed word) 2 test_sbytes::@2/-(byte/signed byte/word/signed word) 2 test_sbytes::@3/(byte/signed byte/word/signed word) 2 test_sbytes::@4/(byte/signed byte/word/signed word) 2 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte[]) test_sbytes::msg test_sbytes::@1/(const byte[]) test_sbytes::msg1 test_sbytes::@2/(const byte[]) test_sbytes::msg2 test_sbytes::@3/(const byte[]) test_sbytes::msg3 test_sbytes::@4/(const byte[]) test_sbytes::msg4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + call print_str param-assignment + to:assert_sbyte::@2 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + call print_str param-assignment + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + call print_ln param-assignment + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + return + to:@return +@11: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @11 + +FINAL SYMBOL TABLE +(label) @11 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 = ((byte*))(word) 53281 +(byte) GREEN +(const byte) GREEN#0 = (byte/signed byte/word/signed word) 5 +(byte) RED +(const byte) RED#0 = (byte/signed byte/word/signed word) 2 +(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) +(label) assert_byte::@1 +(label) assert_byte::@2 +(label) assert_byte::@3 +(label) assert_byte::@5 +(label) assert_byte::@6 +(label) assert_byte::@return +(byte) assert_byte::b +(byte) assert_byte::b#3 +(byte) assert_byte::c +(byte) assert_byte::c#3 +(byte*) assert_byte::msg +(byte*) assert_byte::msg#3 +(const byte[]) assert_byte::str = (string) " @" +(const byte[]) assert_byte::str1 = (string) "ok@" +(const byte[]) assert_byte::str2 = (string) "fail!@" +(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) +(label) assert_sbyte::@1 +(label) assert_sbyte::@2 +(label) assert_sbyte::@3 +(label) assert_sbyte::@5 +(label) assert_sbyte::@6 +(label) assert_sbyte::@return +(signed byte) assert_sbyte::b +(signed byte) assert_sbyte::b#5 +(signed byte) assert_sbyte::c +(signed byte) assert_sbyte::c#5 +(byte*) assert_sbyte::msg +(byte*) assert_sbyte::msg#5 +(const byte[]) assert_sbyte::str = (string) " @" +(const byte[]) assert_sbyte::str1 = (string) "ok@" +(const byte[]) assert_sbyte::str2 = (string) "fail!@" +(byte*) char_cursor +(byte*) char_cursor#1 +(byte*) char_cursor#2 +(byte*) char_cursor#65 +(byte*) char_cursor#75 +(byte*) line_cursor +(byte*) line_cursor#1 +(byte*) line_cursor#21 +(byte*) line_cursor#42 +(byte*) line_cursor#45 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(void()) print_cls() +(label) print_cls::@1 +(label) print_cls::@return +(byte*) print_cls::sc +(byte*) print_cls::sc#1 +(byte*) print_cls::sc#2 +(void()) print_ln() +(label) print_ln::@1 +(label) print_ln::@return +(void()) print_str((byte*) print_str::str) +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@return +(byte*) print_str::str +(byte*) print_str::str#0 +(byte*) print_str::str#1 +(byte*) print_str::str#10 +(byte*) print_str::str#11 +(byte*) print_str::str#5 +(void()) test_bytes() +(label) test_bytes::@1 +(label) test_bytes::@2 +(label) test_bytes::@return +(byte) test_bytes::bb +(const byte) test_bytes::bb#0 = (byte/signed byte/word/signed word) 0 +(byte) test_bytes::bc +(const byte) test_bytes::bc#0 = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word) 2 +(byte) test_bytes::bd +(const byte) test_bytes::bd#0 = (const byte) test_bytes::bc#0-(byte/signed byte/word/signed word) 4 +(const byte[]) test_bytes::msg = (string) "0=0@" +(const byte[]) test_bytes::msg1 = (string) "0+2=2@" +(const byte[]) test_bytes::msg2 = (string) "0+2-4=254@" +(void()) test_sbytes() +(label) test_sbytes::@1 +(label) test_sbytes::@2 +(label) test_sbytes::@3 +(label) test_sbytes::@4 +(label) test_sbytes::@return +(signed byte) test_sbytes::bb +(const signed byte) test_sbytes::bb#0 = (byte/signed byte/word/signed word) 0 +(signed byte) test_sbytes::bc +(const signed byte) test_sbytes::bc#0 = (const signed byte) test_sbytes::bb#0+(byte/signed byte/word/signed word) 2 +(signed byte) test_sbytes::bd +(const signed byte) test_sbytes::bd#0 = (const signed byte) test_sbytes::bc#0-(byte/signed byte/word/signed word) 4 +(signed byte) test_sbytes::be +(const signed byte) test_sbytes::be#0 = -(const signed byte) test_sbytes::bd#0 +(signed byte) test_sbytes::bf +(const signed byte) test_sbytes::bf#0 = -(byte/signed byte/word/signed word) 127-(byte/signed byte/word/signed word) 127 +(const byte[]) test_sbytes::msg = (string) "0=0@" +(const byte[]) test_sbytes::msg1 = (string) "0+2=2@" +(const byte[]) test_sbytes::msg2 = (string) "0+2-4=-2@" +(const byte[]) test_sbytes::msg3 = (string) "-(0+2-4)=2@" +(const byte[]) test_sbytes::msg4 = (string) "-127-127=2@" + +Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return +Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) +Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) +Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return print_ln::@3 test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return print_cls::@3 +CONTROL FLOW GRAPH - PHI LIFTED +@begin: scope:[] from + to:@11 +@11: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @11 +main: scope:[main] from @11 + call print_cls param-assignment + to:main::@1 +main::@1: scope:[main] from main + *((const byte*) BGCOL#0) ← (const byte) GREEN#0 + call test_bytes param-assignment + to:main::@2 +main::@2: scope:[main] from main::@1 + call test_sbytes param-assignment + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + call assert_sbyte param-assignment + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + call assert_sbyte param-assignment + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + call assert_sbyte param-assignment + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + call assert_sbyte param-assignment + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + call assert_sbyte param-assignment + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + return + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word) 0 test_sbytes::@1/(byte/signed byte/word/signed word) 2 test_sbytes::@2/-(byte/signed byte/word/signed word) 2 test_sbytes::@3/(byte/signed byte/word/signed word) 2 test_sbytes::@4/(byte/signed byte/word/signed word) 2 ) + (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) + (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte[]) test_sbytes::msg test_sbytes::@1/(const byte[]) test_sbytes::msg1 test_sbytes::@2/(const byte[]) test_sbytes::msg2 test_sbytes::@3/(const byte[]) test_sbytes::msg3 test_sbytes::@4/(const byte[]) test_sbytes::msg4 ) + (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 + (byte*~) print_str::str#13 ← (byte*) print_str::str#5 + (byte*~) char_cursor#82 ← (byte*) line_cursor#1 + call print_str param-assignment + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + (byte*~) char_cursor#85 ← (byte*) char_cursor#2 + call print_str param-assignment + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 + to:assert_sbyte::@3 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + (byte*~) char_cursor#84 ← (byte*) char_cursor#2 + call print_str param-assignment + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + (byte*~) line_cursor#66 ← (byte*) line_cursor#1 + call print_ln param-assignment + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + return + to:@return +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + (byte*~) char_cursor#83 ← (byte*) char_cursor#2 + call print_str param-assignment + to:assert_sbyte::@2 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + (byte*) char_cursor#75 ← phi( assert_byte/(byte*~) char_cursor#78 assert_byte::@1/(byte*~) char_cursor#79 assert_byte::@3/(byte*~) char_cursor#80 assert_byte::@5/(byte*~) char_cursor#81 assert_sbyte/(byte*~) char_cursor#82 assert_sbyte::@1/(byte*~) char_cursor#83 assert_sbyte::@3/(byte*~) char_cursor#84 assert_sbyte::@5/(byte*~) char_cursor#85 ) + (byte*) print_str::str#11 ← phi( assert_byte/(byte*~) print_str::str#12 assert_byte::@1/(const byte[]) assert_byte::str1 assert_byte::@3/(const byte[]) assert_byte::str2 assert_byte::@5/(const byte[]) assert_byte::str assert_sbyte/(byte*~) print_str::str#13 assert_sbyte::@1/(const byte[]) assert_sbyte::str1 assert_sbyte::@3/(const byte[]) assert_sbyte::str2 assert_sbyte::@5/(const byte[]) assert_sbyte::str ) + (byte*~) print_str::str#14 ← (byte*) print_str::str#11 + (byte*~) char_cursor#86 ← (byte*) char_cursor#75 + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + (byte*) char_cursor#2 ← phi( print_str/(byte*~) char_cursor#86 print_str::@2/(byte*~) char_cursor#87 ) + (byte*) print_str::str#10 ← phi( print_str/(byte*~) print_str::str#14 print_str::@2/(byte*~) print_str::str#15 ) + if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + return + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) + (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 + (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 + (byte*~) print_str::str#15 ← (byte*) print_str::str#0 + (byte*~) char_cursor#87 ← (byte*) char_cursor#1 + to:print_str::@1 +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*~) line_cursor#65 assert_sbyte::@2/(byte*~) line_cursor#66 ) + (byte*~) line_cursor#67 ← (byte*) line_cursor#42 + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@3 + (byte*) line_cursor#21 ← phi( print_ln/(byte*~) line_cursor#67 print_ln::@3/(byte*~) line_cursor#68 ) + (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 + if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@3 + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + return + to:@return +print_ln::@3: scope:[print_ln] from print_ln::@1 + (byte*~) line_cursor#68 ← (byte*) line_cursor#1 + to:print_ln::@1 +test_bytes: scope:[test_bytes] from main::@1 + call assert_byte param-assignment + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + (byte*~) char_cursor#88 ← (byte*) line_cursor#1 + (byte*~) line_cursor#69 ← (byte*) line_cursor#1 + call assert_byte param-assignment + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + (byte*~) char_cursor#89 ← (byte*) line_cursor#1 + (byte*~) line_cursor#70 ← (byte*) line_cursor#1 + call assert_byte param-assignment + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + return + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) line_cursor#69 test_bytes::@2/(byte*~) line_cursor#70 ) + (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word) 0 test_bytes::@1/(byte/signed byte/word/signed word) 2 test_bytes::@2/(byte/word/signed word) 254 ) + (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) + (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) char_cursor#88 test_bytes::@2/(byte*~) char_cursor#89 ) + (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte[]) test_bytes::msg test_bytes::@1/(const byte[]) test_bytes::msg1 test_bytes::@2/(const byte[]) test_bytes::msg2 ) + (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 + (byte*~) print_str::str#12 ← (byte*) print_str::str#1 + (byte*~) char_cursor#78 ← (byte*) char_cursor#65 + call print_str param-assignment + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + (byte*~) char_cursor#81 ← (byte*) char_cursor#2 + call print_str param-assignment + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 + to:assert_byte::@3 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + *((const byte*) BGCOL#0) ← (const byte) RED#0 + (byte*~) char_cursor#80 ← (byte*) char_cursor#2 + call print_str param-assignment + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + (byte*~) line_cursor#65 ← (byte*) line_cursor#45 + call print_ln param-assignment + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + return + to:@return +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + (byte*~) char_cursor#79 ← (byte*) char_cursor#2 + call print_str param-assignment + to:assert_byte::@2 +print_cls: scope:[print_cls] from main + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@3 + (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@3/(byte*~) print_cls::sc#3 ) + *((byte*) print_cls::sc#2) ← (byte) ' ' + (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 + if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@3 + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + return + to:@return +print_cls::@3: scope:[print_cls] from print_cls::@1 + (byte*~) print_cls::sc#3 ← (byte*) print_cls::sc#1 + to:print_cls::@1 + +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @11 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of test_sbytes +Adding NOP phi() at start of test_sbytes::@1 +Adding NOP phi() at start of test_sbytes::@2 +Adding NOP phi() at start of test_sbytes::@3 +Adding NOP phi() at start of test_sbytes::@4 +Adding NOP phi() at start of test_bytes +Adding NOP phi() at start of print_cls +CALL GRAPH +Calls in [] to main:2 +Calls in [main] to print_cls:5 test_bytes:7 test_sbytes:9 +Calls in [test_sbytes] to assert_sbyte:12 assert_sbyte:14 assert_sbyte:16 assert_sbyte:18 assert_sbyte:20 +Calls in [assert_sbyte] to print_str:26 print_str:28 print_str:32 print_ln:34 print_str:37 +Calls in [test_bytes] to assert_byte:57 assert_byte:60 assert_byte:63 +Calls in [assert_byte] to print_str:69 print_str:71 print_str:75 print_ln:77 print_str:80 + +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - LIVE RANGES FOUND +@begin: scope:[] from + [0] phi() [ ] + to:@11 +@11: scope:[] from @begin + [1] phi() [ ] + [2] call main param-assignment [ ] + to:@end +@end: scope:[] from @11 + [3] phi() [ ] +main: scope:[main] from @11 + [4] phi() [ ] + [5] call print_cls param-assignment [ ] + to:main::@1 +main::@1: scope:[main] from main + [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] + [7] call test_bytes param-assignment [ line_cursor#1 ] + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ line_cursor#1 ] + [9] call test_sbytes param-assignment [ ] + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return [ ] + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + [11] phi() [ line_cursor#1 ] + [12] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + [13] phi() [ line_cursor#1 ] + [14] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + [15] phi() [ line_cursor#1 ] + [16] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + [17] phi() [ line_cursor#1 ] + [18] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + [19] phi() [ line_cursor#1 ] + [20] call assert_sbyte param-assignment [ ] + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + [21] return [ ] + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word) 0 test_sbytes::@1/(byte/signed byte/word/signed word) 2 test_sbytes::@2/-(byte/signed byte/word/signed word) 2 test_sbytes::@3/(byte/signed byte/word/signed word) 2 test_sbytes::@4/(byte/signed byte/word/signed word) 2 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] + [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] + [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte[]) test_sbytes::msg test_sbytes::@1/(const byte[]) test_sbytes::msg1 test_sbytes::@2/(const byte[]) test_sbytes::msg2 test_sbytes::@3/(const byte[]) test_sbytes::msg3 test_sbytes::@4/(const byte[]) test_sbytes::msg4 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] + [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] + [24] (byte*~) print_str::str#13 ← (byte*) print_str::str#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#13 line_cursor#1 ] + [25] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#13 char_cursor#82 line_cursor#1 ] + [26] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + [27] (byte*~) char_cursor#85 ← (byte*) char_cursor#2 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#85 ] + [28] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + [29] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@3 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + [30] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] + [31] (byte*~) char_cursor#84 ← (byte*) char_cursor#2 [ line_cursor#1 char_cursor#84 ] + [32] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + [33] (byte*~) line_cursor#66 ← (byte*) line_cursor#1 [ char_cursor#2 line_cursor#66 ] + [34] call print_ln param-assignment [ line_cursor#1 ] + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + [35] return [ line_cursor#1 ] + to:@return +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + [36] (byte*~) char_cursor#83 ← (byte*) char_cursor#2 [ line_cursor#1 char_cursor#83 ] + [37] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@2 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + [38] (byte*) char_cursor#75 ← phi( assert_byte/(byte*~) char_cursor#78 assert_byte::@1/(byte*~) char_cursor#79 assert_byte::@3/(byte*~) char_cursor#80 assert_byte::@5/(byte*~) char_cursor#81 assert_sbyte/(byte*~) char_cursor#82 assert_sbyte::@1/(byte*~) char_cursor#83 assert_sbyte::@3/(byte*~) char_cursor#84 assert_sbyte::@5/(byte*~) char_cursor#85 ) [ print_str::str#11 char_cursor#75 ] + [38] (byte*) print_str::str#11 ← phi( assert_byte/(byte*~) print_str::str#12 assert_byte::@1/(const byte[]) assert_byte::str1 assert_byte::@3/(const byte[]) assert_byte::str2 assert_byte::@5/(const byte[]) assert_byte::str assert_sbyte/(byte*~) print_str::str#13 assert_sbyte::@1/(const byte[]) assert_sbyte::str1 assert_sbyte::@3/(const byte[]) assert_sbyte::str2 assert_sbyte::@5/(const byte[]) assert_sbyte::str ) [ print_str::str#11 char_cursor#75 ] + [39] (byte*~) print_str::str#14 ← (byte*) print_str::str#11 [ char_cursor#75 print_str::str#14 ] + [40] (byte*~) char_cursor#86 ← (byte*) char_cursor#75 [ print_str::str#14 char_cursor#86 ] + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + [41] (byte*) char_cursor#2 ← phi( print_str/(byte*~) char_cursor#86 print_str::@2/(byte*~) char_cursor#87 ) [ char_cursor#2 print_str::str#10 ] + [41] (byte*) print_str::str#10 ← phi( print_str/(byte*~) print_str::str#14 print_str::@2/(byte*~) print_str::str#15 ) [ char_cursor#2 print_str::str#10 ] + [42] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + [43] return [ char_cursor#2 ] + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + [44] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] + [45] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] + [46] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ char_cursor#1 print_str::str#0 ] + [47] (byte*~) print_str::str#15 ← (byte*) print_str::str#0 [ print_str::str#15 char_cursor#1 ] + [48] (byte*~) char_cursor#87 ← (byte*) char_cursor#1 [ print_str::str#15 char_cursor#87 ] + to:print_str::@1 +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + [49] (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*~) line_cursor#65 assert_sbyte::@2/(byte*~) line_cursor#66 ) [ char_cursor#2 line_cursor#42 ] + [50] (byte*~) line_cursor#67 ← (byte*) line_cursor#42 [ char_cursor#2 line_cursor#67 ] + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@3 + [51] (byte*) line_cursor#21 ← phi( print_ln/(byte*~) line_cursor#67 print_ln::@3/(byte*~) line_cursor#68 ) [ char_cursor#2 line_cursor#21 ] + [52] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] + [53] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@3 [ line_cursor#1 char_cursor#2 ] + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + [54] return [ line_cursor#1 ] + to:@return +print_ln::@3: scope:[print_ln] from print_ln::@1 + [55] (byte*~) line_cursor#68 ← (byte*) line_cursor#1 [ char_cursor#2 line_cursor#68 ] + to:print_ln::@1 +test_bytes: scope:[test_bytes] from main::@1 + [56] phi() [ ] + [57] call assert_byte param-assignment [ line_cursor#1 ] + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + [58] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] + [59] (byte*~) line_cursor#69 ← (byte*) line_cursor#1 [ char_cursor#88 line_cursor#69 ] + [60] call assert_byte param-assignment [ line_cursor#1 ] + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + [61] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] + [62] (byte*~) line_cursor#70 ← (byte*) line_cursor#1 [ char_cursor#89 line_cursor#70 ] + [63] call assert_byte param-assignment [ line_cursor#1 ] + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + [64] return [ line_cursor#1 ] + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + [65] (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) line_cursor#69 test_bytes::@2/(byte*~) line_cursor#70 ) [ assert_byte::msg#3 char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [65] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word) 0 test_bytes::@1/(byte/signed byte/word/signed word) 2 test_bytes::@2/(byte/word/signed word) 254 ) [ assert_byte::msg#3 char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [65] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [ assert_byte::msg#3 char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [65] (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) char_cursor#88 test_bytes::@2/(byte*~) char_cursor#89 ) [ assert_byte::msg#3 char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [65] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte[]) test_bytes::msg test_bytes::@1/(const byte[]) test_bytes::msg1 test_bytes::@2/(const byte[]) test_bytes::msg2 ) [ assert_byte::msg#3 char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [66] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 print_str::str#1 ] + [67] (byte*~) print_str::str#12 ← (byte*) print_str::str#1 [ print_str::str#12 char_cursor#65 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [68] (byte*~) char_cursor#78 ← (byte*) char_cursor#65 [ print_str::str#12 char_cursor#78 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [69] call print_str param-assignment [ char_cursor#2 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + [70] (byte*~) char_cursor#81 ← (byte*) char_cursor#2 [ char_cursor#81 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + [71] call print_str param-assignment [ char_cursor#2 assert_byte::b#3 assert_byte::c#3 line_cursor#45 ] + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + [72] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] + to:assert_byte::@3 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + [73] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] + [74] (byte*~) char_cursor#80 ← (byte*) char_cursor#2 [ char_cursor#80 line_cursor#45 ] + [75] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + [76] (byte*~) line_cursor#65 ← (byte*) line_cursor#45 [ char_cursor#2 line_cursor#65 ] + [77] call print_ln param-assignment [ line_cursor#1 ] + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + [78] return [ line_cursor#1 ] + to:@return +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + [79] (byte*~) char_cursor#79 ← (byte*) char_cursor#2 [ char_cursor#79 line_cursor#45 ] + [80] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] + to:assert_byte::@2 +print_cls: scope:[print_cls] from main + [81] phi() [ ] + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@3 + [82] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@3/(byte*~) print_cls::sc#3 ) [ print_cls::sc#2 ] + [83] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] + [84] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] + [85] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@3 [ print_cls::sc#1 ] + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [86] return [ ] + to:@return +print_cls::@3: scope:[print_cls] from print_cls::@1 + [87] (byte*~) print_cls::sc#3 ← (byte*) print_cls::sc#1 [ print_cls::sc#3 ] + to:print_cls::@1 + +Created 15 initial phi equivalence classes +Coalesced [24] print_str::str#13 ← print_str::str#5 +Not coalescing [25] char_cursor#82 ← line_cursor#1 +Coalesced [27] char_cursor#85 ← char_cursor#2 +Coalesced (already) [31] char_cursor#84 ← char_cursor#2 +Coalesced [33] line_cursor#66 ← line_cursor#1 +Coalesced (already) [36] char_cursor#83 ← char_cursor#2 +Coalesced [39] print_str::str#14 ← print_str::str#11 +Coalesced (already) [40] char_cursor#86 ← char_cursor#75 +Coalesced [47] print_str::str#15 ← print_str::str#0 +Coalesced [48] char_cursor#87 ← char_cursor#1 +Coalesced [50] line_cursor#67 ← line_cursor#42 +Coalesced (already) [55] line_cursor#68 ← line_cursor#1 +Not coalescing [58] char_cursor#88 ← line_cursor#1 +Coalesced [59] line_cursor#69 ← line_cursor#1 +Not coalescing [61] char_cursor#89 ← line_cursor#1 +Coalesced (already) [62] line_cursor#70 ← line_cursor#1 +Coalesced [67] print_str::str#12 ← print_str::str#1 +Coalesced [68] char_cursor#78 ← char_cursor#65 +Coalesced (already) [70] char_cursor#81 ← char_cursor#2 +Coalesced (already) [74] char_cursor#80 ← char_cursor#2 +Coalesced (already) [76] line_cursor#65 ← line_cursor#45 +Coalesced (already) [79] char_cursor#79 ← char_cursor#2 +Coalesced [87] print_cls::sc#3 ← print_cls::sc#1 +Coalesced down to 10 phi equivalence classes +Culled Empty Block (label) print_ln::@3 +Culled Empty Block (label) print_cls::@3 +Block Sequence Planned @begin @11 @end main main::@1 main::@2 main::@return test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 test_sbytes::@return assert_sbyte assert_sbyte::@5 assert_sbyte::@6 assert_sbyte::@3 assert_sbyte::@2 assert_sbyte::@return assert_sbyte::@1 print_str print_str::@1 print_str::@return print_str::@2 print_ln print_ln::@1 print_ln::@return test_bytes test_bytes::@1 test_bytes::@2 test_bytes::@return assert_byte assert_byte::@5 assert_byte::@6 assert_byte::@3 assert_byte::@2 assert_byte::@return assert_byte::@1 print_cls print_cls::@1 print_cls::@return +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @11 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Adding NOP phi() at start of main::@2 +Adding NOP phi() at start of test_sbytes +Adding NOP phi() at start of test_sbytes::@1 +Adding NOP phi() at start of test_sbytes::@2 +Adding NOP phi() at start of test_sbytes::@3 +Adding NOP phi() at start of test_sbytes::@4 +Adding NOP phi() at start of assert_sbyte::@5 +Adding NOP phi() at start of assert_sbyte::@2 +Adding NOP phi() at start of assert_sbyte::@1 +Adding NOP phi() at start of test_bytes +Adding NOP phi() at start of assert_byte::@5 +Adding NOP phi() at start of assert_byte::@2 +Adding NOP phi() at start of assert_byte::@1 +Adding NOP phi() at start of print_cls +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES +@begin: scope:[] from + [0] phi() [ ] + to:@11 +@11: scope:[] from @begin + [1] phi() [ ] + [2] call main param-assignment [ ] + to:@end +@end: scope:[] from @11 + [3] phi() [ ] +main: scope:[main] from @11 + [4] phi() [ ] + [5] call print_cls param-assignment [ ] + to:main::@1 +main::@1: scope:[main] from main + [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] + [7] call test_bytes param-assignment [ line_cursor#1 ] + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ line_cursor#1 ] + [9] call test_sbytes param-assignment [ ] + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return [ ] + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + [11] phi() [ line_cursor#1 ] + [12] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + [13] phi() [ line_cursor#1 ] + [14] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + [15] phi() [ line_cursor#1 ] + [16] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + [17] phi() [ line_cursor#1 ] + [18] call assert_sbyte param-assignment [ line_cursor#1 ] + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + [19] phi() [ line_cursor#1 ] + [20] call assert_sbyte param-assignment [ ] + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + [21] return [ ] + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word) 0 test_sbytes::@1/(byte/signed byte/word/signed word) 2 test_sbytes::@2/-(byte/signed byte/word/signed word) 2 test_sbytes::@3/(byte/signed byte/word/signed word) 2 test_sbytes::@4/(byte/signed byte/word/signed word) 2 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] + [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] + [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte[]) test_sbytes::msg test_sbytes::@1/(const byte[]) test_sbytes::msg1 test_sbytes::@2/(const byte[]) test_sbytes::msg2 test_sbytes::@3/(const byte[]) test_sbytes::msg3 test_sbytes::@4/(const byte[]) test_sbytes::msg4 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] + [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] + [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] + [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + [26] phi() [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] + [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@3 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] + [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + [31] phi() [ line_cursor#1 char_cursor#2 ] + [32] call print_ln param-assignment [ line_cursor#1 ] + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + [33] return [ line_cursor#1 ] + to:@return +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + [34] phi() [ line_cursor#1 char_cursor#2 ] + [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] + to:assert_sbyte::@2 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + [36] (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*~) char_cursor#82 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) [ print_str::str#11 char_cursor#75 ] + [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte[]) assert_byte::str1 assert_byte::@3/(const byte[]) assert_byte::str2 assert_byte::@5/(const byte[]) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte[]) assert_sbyte::str1 assert_sbyte::@3/(const byte[]) assert_sbyte::str2 assert_sbyte::@5/(const byte[]) assert_sbyte::str ) [ print_str::str#11 char_cursor#75 ] + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + [37] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#10 ] + [37] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#10 ] + [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + [39] return [ char_cursor#2 ] + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] + [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] + [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] + to:print_str::@1 +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + [43] (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#42 ] + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + [44] (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#21 ] + [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] + [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + [47] return [ line_cursor#1 ] + to:@return +test_bytes: scope:[test_bytes] from main::@1 + [48] phi() [ ] + [49] call assert_byte param-assignment [ line_cursor#1 ] + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] + [51] call assert_byte param-assignment [ line_cursor#1 ] + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] + [53] call assert_byte param-assignment [ line_cursor#1 ] + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + [54] return [ line_cursor#1 ] + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + [55] (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] + [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word) 0 test_bytes::@1/(byte/signed byte/word/signed word) 2 test_bytes::@2/(byte/word/signed word) 254 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] + [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] + [55] (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) char_cursor#88 test_bytes::@2/(byte*~) char_cursor#89 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] + [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte[]) test_bytes::msg test_bytes::@1/(const byte[]) test_bytes::msg1 test_bytes::@2/(const byte[]) test_bytes::msg2 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] + [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] + [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + [58] phi() [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] + [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] + to:assert_byte::@3 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] + [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + [63] phi() [ char_cursor#2 line_cursor#45 ] + [64] call print_ln param-assignment [ line_cursor#1 ] + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + [65] return [ line_cursor#1 ] + to:@return +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + [66] phi() [ char_cursor#2 line_cursor#45 ] + [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] + to:assert_byte::@2 +print_cls: scope:[print_cls] from main + [68] phi() [ ] + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [69] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] + [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] + [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] + [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [73] return [ ] + to:@return + +CONTROL FLOW GRAPH - PHI MEM COALESCED +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@11 +@11: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @11 + [3] phi() [ ] ( ) +main: scope:[main] from @11 + [4] phi() [ ] ( main:2 [ ] ) + [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main + [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) + [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 + [8] phi() [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + [9] call test_sbytes param-assignment [ ] ( main:2 [ ] ) + to:main::@return +main::@return: scope:[main] from main::@2 + [10] return [ ] ( main:2 [ ] ) + to:@return +test_sbytes: scope:[test_sbytes] from main::@2 + [11] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@1 +test_sbytes::@1: scope:[test_sbytes] from test_sbytes + [13] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@2 +test_sbytes::@2: scope:[test_sbytes] from test_sbytes::@1 + [15] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@3 +test_sbytes::@3: scope:[test_sbytes] from test_sbytes::@2 + [17] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + to:test_sbytes::@4 +test_sbytes::@4: scope:[test_sbytes] from test_sbytes::@3 + [19] phi() [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] ) + to:test_sbytes::@return +test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4 + [21] return [ ] ( main:2::test_sbytes:9 [ ] ) + to:@return +assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 + [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word) 0 test_sbytes::@1/(byte/signed byte/word/signed word) 2 test_sbytes::@2/-(byte/signed byte/word/signed word) 2 test_sbytes::@3/(byte/signed byte/word/signed word) 2 test_sbytes::@4/(byte/signed byte/word/signed word) 2 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ) + [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ) + [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const byte[]) test_sbytes::msg test_sbytes::@1/(const byte[]) test_sbytes::msg1 test_sbytes::@2/(const byte[]) test_sbytes::msg2 test_sbytes::@3/(const byte[]) test_sbytes::msg3 test_sbytes::@4/(const byte[]) test_sbytes::msg4 ) [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::msg#5 assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 ] ) + [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) + [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) + [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@5 +assert_sbyte::@5: scope:[assert_sbyte] from assert_sbyte + [26] phi() [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@6 +assert_sbyte::@6: scope:[assert_sbyte] from assert_sbyte::@5 + [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@3 +assert_sbyte::@3: scope:[assert_sbyte] from assert_sbyte::@6 + [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@2 +assert_sbyte::@2: scope:[assert_sbyte] from assert_sbyte::@1 assert_sbyte::@3 + [31] phi() [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + to:assert_sbyte::@return +assert_sbyte::@return: scope:[assert_sbyte] from assert_sbyte::@2 + [33] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + to:@return +assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6 + [34] phi() [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + to:assert_sbyte::@2 +print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 + [36] (byte*) char_cursor#75 ← phi( assert_byte/(byte*) char_cursor#65 assert_byte::@1/(byte*) char_cursor#2 assert_byte::@3/(byte*) char_cursor#2 assert_byte::@5/(byte*) char_cursor#2 assert_sbyte/(byte*~) char_cursor#82 assert_sbyte::@1/(byte*) char_cursor#2 assert_sbyte::@3/(byte*) char_cursor#2 assert_sbyte::@5/(byte*) char_cursor#2 ) [ print_str::str#11 char_cursor#75 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] ) + [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const byte[]) assert_byte::str1 assert_byte::@3/(const byte[]) assert_byte::str2 assert_byte::@5/(const byte[]) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const byte[]) assert_sbyte::str1 assert_sbyte::@3/(const byte[]) assert_sbyte::str2 assert_sbyte::@5/(const byte[]) assert_sbyte::str ) [ print_str::str#11 char_cursor#75 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#11 char_cursor#75 ] ) + to:print_str::@1 +print_str::@1: scope:[print_str] from print_str print_str::@2 + [37] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#75 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + [37] (byte*) print_str::str#10 ← phi( print_str/(byte*) print_str::str#11 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + to:print_str::@return +print_str::@return: scope:[print_str] from print_str::@1 + [39] return [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] ) + to:@return +print_str::@2: scope:[print_str] from print_str::@1 + [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) + [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) + [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) + to:print_str::@1 +print_ln: scope:[print_ln] from assert_byte::@2 assert_sbyte::@2 + [43] (byte*) line_cursor#42 ← phi( assert_byte::@2/(byte*) line_cursor#45 assert_sbyte::@2/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#42 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ char_cursor#2 line_cursor#42 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ char_cursor#2 line_cursor#42 ] ) + to:print_ln::@1 +print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 + [44] (byte*) line_cursor#21 ← phi( print_ln/(byte*) line_cursor#42 print_ln::@1/(byte*) line_cursor#1 ) [ char_cursor#2 line_cursor#21 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ char_cursor#2 line_cursor#21 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ char_cursor#2 line_cursor#21 ] ) + [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) + [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) + to:print_ln::@return +print_ln::@return: scope:[print_ln] from print_ln::@1 + [47] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] ) + to:@return +test_bytes: scope:[test_bytes] from main::@1 + [48] phi() [ ] ( main:2::test_bytes:7 [ ] ) + [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:test_bytes::@1 +test_bytes::@1: scope:[test_bytes] from test_bytes + [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) + [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:test_bytes::@2 +test_bytes::@2: scope:[test_bytes] from test_bytes::@1 + [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) + [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:test_bytes::@return +test_bytes::@return: scope:[test_bytes] from test_bytes::@2 + [54] return [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + to:@return +assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2 + [55] (byte*) line_cursor#45 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*) line_cursor#1 test_bytes::@2/(byte*) line_cursor#1 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word) 0 test_bytes::@1/(byte/signed byte/word/signed word) 2 test_bytes::@2/(byte/word/signed word) 254 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte*) char_cursor#65 ← phi( test_bytes/((byte*))(word/signed word) 1024 test_bytes::@1/(byte*~) char_cursor#88 test_bytes::@2/(byte*~) char_cursor#89 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const byte[]) test_bytes::msg test_bytes::@1/(const byte[]) test_bytes::msg1 test_bytes::@2/(const byte[]) test_bytes::msg2 ) [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#65 line_cursor#45 assert_byte::msg#3 assert_byte::b#3 assert_byte::c#3 ] ) + [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + to:assert_byte::@5 +assert_byte::@5: scope:[assert_byte] from assert_byte + [58] phi() [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + to:assert_byte::@6 +assert_byte::@6: scope:[assert_byte] from assert_byte::@5 + [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + to:assert_byte::@3 +assert_byte::@3: scope:[assert_byte] from assert_byte::@6 + [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + to:assert_byte::@2 +assert_byte::@2: scope:[assert_byte] from assert_byte::@1 assert_byte::@3 + [63] phi() [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + to:assert_byte::@return +assert_byte::@return: scope:[assert_byte] from assert_byte::@2 + [65] return [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + to:@return +assert_byte::@1: scope:[assert_byte] from assert_byte::@6 + [66] phi() [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + to:assert_byte::@2 +print_cls: scope:[print_cls] from main + [68] phi() [ ] ( main:2::print_cls:5 [ ] ) + to:print_cls::@1 +print_cls::@1: scope:[print_cls] from print_cls print_cls::@1 + [69] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word) 1024 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) + [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) + to:print_cls::@return +print_cls::@return: scope:[print_cls] from print_cls::@1 + [73] return [ ] ( main:2::print_cls:5 [ ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@11 dominated by @11 @begin +@end dominated by @end @11 @begin +main dominated by main @11 @begin +main::@1 dominated by main main::@1 @11 @begin +main::@2 dominated by main main::@1 main::@2 @11 @begin +main::@return dominated by main::@return main main::@1 main::@2 @11 @begin +test_sbytes dominated by main test_sbytes main::@1 main::@2 @11 @begin +test_sbytes::@1 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 +test_sbytes::@2 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 +test_sbytes::@3 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 +test_sbytes::@4 dominated by main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 +test_sbytes::@return dominated by test_sbytes::@return main test_sbytes main::@1 main::@2 @11 @begin test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 +assert_sbyte dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin +assert_sbyte::@5 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 +assert_sbyte::@6 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@6 +assert_sbyte::@3 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@3 assert_sbyte::@6 +assert_sbyte::@2 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 +assert_sbyte::@return dominated by assert_sbyte assert_sbyte::@return main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@2 assert_sbyte::@6 +assert_sbyte::@1 dominated by assert_sbyte main test_sbytes main::@1 main::@2 @11 @begin assert_sbyte::@5 assert_sbyte::@1 assert_sbyte::@6 +print_str dominated by main main::@1 @11 @begin print_str +print_str::@1 dominated by main print_str::@1 main::@1 @11 @begin print_str +print_str::@return dominated by print_str::@return main print_str::@1 main::@1 @11 @begin print_str +print_str::@2 dominated by main print_str::@1 print_str::@2 main::@1 @11 @begin print_str +print_ln dominated by main main::@1 @11 @begin print_ln +print_ln::@1 dominated by print_ln::@1 main main::@1 @11 @begin print_ln +print_ln::@return dominated by print_ln::@1 main print_ln::@return main::@1 @11 @begin print_ln +test_bytes dominated by test_bytes main main::@1 @11 @begin +test_bytes::@1 dominated by test_bytes main main::@1 @11 @begin test_bytes::@1 +test_bytes::@2 dominated by test_bytes main main::@1 @11 @begin test_bytes::@2 test_bytes::@1 +test_bytes::@return dominated by test_bytes main main::@1 @11 @begin test_bytes::@2 test_bytes::@1 test_bytes::@return +assert_byte dominated by test_bytes main main::@1 @11 @begin assert_byte +assert_byte::@5 dominated by test_bytes main assert_byte::@5 main::@1 @11 @begin assert_byte +assert_byte::@6 dominated by test_bytes main assert_byte::@5 assert_byte::@6 main::@1 @11 @begin assert_byte +assert_byte::@3 dominated by test_bytes assert_byte::@3 main assert_byte::@5 assert_byte::@6 main::@1 @11 @begin assert_byte +assert_byte::@2 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 @11 @begin assert_byte +assert_byte::@return dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@2 main::@1 assert_byte::@return @11 @begin assert_byte +assert_byte::@1 dominated by test_bytes main assert_byte::@5 assert_byte::@6 assert_byte::@1 main::@1 @11 @begin assert_byte +print_cls dominated by main @11 @begin print_cls +print_cls::@1 dominated by main @11 @begin print_cls::@1 print_cls +print_cls::@return dominated by main print_cls::@return @11 @begin print_cls::@1 print_cls + +Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null +Found back edge: Loop head: print_ln::@1 tails: print_ln::@1 blocks: null +Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null +Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Populated: Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 +Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +NATURAL LOOPS +Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 +Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 + +Found 0 loops in scope [] +Found 0 loops in scope [main] +Found 1 loops in scope [print_cls] + Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 +Found 0 loops in scope [test_bytes] +Found 0 loops in scope [test_sbytes] +Found 0 loops in scope [assert_byte] +Found 0 loops in scope [assert_sbyte] +Found 1 loops in scope [print_str] + Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 +Found 1 loops in scope [print_ln] + Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 +NATURAL LOOPS WITH DEPTH +Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 depth: 1 +Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1 depth: 1 +Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(byte*) BGCOL +(byte) GREEN +(byte) RED +(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) +(byte) assert_byte::b +(byte) assert_byte::b#3 0.4 +(byte) assert_byte::c +(byte) assert_byte::c#3 0.4 +(byte*) assert_byte::msg +(byte*) assert_byte::msg#3 2.0 +(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) +(signed byte) assert_sbyte::b +(signed byte) assert_sbyte::b#5 0.3333333333333333 +(signed byte) assert_sbyte::c +(signed byte) assert_sbyte::c#5 0.3333333333333333 +(byte*) assert_sbyte::msg +(byte*) assert_sbyte::msg#5 2.0 +(byte*) char_cursor +(byte*) char_cursor#1 11.0 +(byte*) char_cursor#2 2.230769230769231 +(byte*) char_cursor#65 3.0 +(byte*) char_cursor#75 18.0 +(byte*~) char_cursor#82 4.0 +(byte*~) char_cursor#88 4.0 +(byte*~) char_cursor#89 4.0 +(byte*) line_cursor +(byte*) line_cursor#1 1.2500000000000002 +(byte*) line_cursor#21 24.0 +(byte*) line_cursor#42 6.0 +(byte*) line_cursor#45 0.5454545454545454 +(void()) main() +(void()) print_cls() +(byte*) print_cls::sc +(byte*) print_cls::sc#1 16.5 +(byte*) print_cls::sc#2 16.5 +(void()) print_ln() +(void()) print_str((byte*) print_str::str) +(byte*) print_str::str +(byte*) print_str::str#0 22.0 +(byte*) print_str::str#1 4.0 +(byte*) print_str::str#10 11.5 +(byte*) print_str::str#11 6.0 +(byte*) print_str::str#5 2.0 +(void()) test_bytes() +(byte) test_bytes::bb +(byte) test_bytes::bc +(byte) test_bytes::bd +(void()) test_sbytes() +(signed byte) test_sbytes::bb +(signed byte) test_sbytes::bc +(signed byte) test_sbytes::bd +(signed byte) test_sbytes::be +(signed byte) test_sbytes::bf + +Initial phi equivalence classes +[ assert_sbyte::msg#5 ] +[ assert_sbyte::b#5 ] +[ assert_sbyte::c#5 ] +[ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] +[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] +[ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +[ assert_byte::msg#3 ] +[ assert_byte::b#3 ] +[ assert_byte::c#3 ] +[ print_cls::sc#2 print_cls::sc#1 ] +Complete equivalence classes +[ assert_sbyte::msg#5 ] +[ assert_sbyte::b#5 ] +[ assert_sbyte::c#5 ] +[ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] +[ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] +[ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +[ assert_byte::msg#3 ] +[ assert_byte::b#3 ] +[ assert_byte::c#3 ] +[ print_cls::sc#2 print_cls::sc#1 ] +Allocated zp ZP_WORD:2 [ assert_sbyte::msg#5 ] +Allocated zp ZP_BYTE:4 [ assert_sbyte::b#5 ] +Allocated zp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Allocated zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] +Allocated zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] +Allocated zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +Allocated zp ZP_WORD:12 [ assert_byte::msg#3 ] +Allocated zp ZP_BYTE:14 [ assert_byte::b#3 ] +Allocated zp ZP_BYTE:15 [ assert_byte::c#3 ] +Allocated zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const BGCOL = $d021 + .const GREEN = 5 + .const RED = 2 + .label char_cursor = 6 + .label line_cursor = $a +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +b11_from_bbegin: + jmp b11 +//SEG4 @11 +b11: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @11 to main [phi:@11->main] +main_from_b11: + jsr main +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +bend_from_b11: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG11 [68] phi from main to print_cls [phi:main->print_cls] + print_cls_from_main: + jsr print_cls + jmp b1 + //SEG12 main::@1 + b1: + //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #GREEN + sta BGCOL + //SEG14 [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] + test_bytes_from_b1: + jsr test_bytes + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [9] call test_sbytes param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] + test_sbytes_from_b2: + jsr test_sbytes + jmp breturn + //SEG20 main::@return + breturn: + //SEG21 [10] return [ ] ( main:2 [ ] ) + rts +} +//SEG22 test_sbytes +test_sbytes: { + .const bb = 0 + .const bc = bb+2 + .const bf = -$7f-$7f + .const bd = bc-4 + .const be = -bd + //SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] + assert_sbyte_from_test_sbytes: + //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 + lda #0 + sta assert_sbyte.c + //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsz1=vbsc1 + lda #bb + sta assert_sbyte.b + //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] + b1_from_test_sbytes: + jmp b1 + //SEG29 test_sbytes::@1 + b1: + //SEG30 [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] + assert_sbyte_from_b1: + //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsz1=vbsc1 + lda #bc + sta assert_sbyte.b + //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg1 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] + b2_from_b1: + jmp b2 + //SEG36 test_sbytes::@2 + b2: + //SEG37 [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] + assert_sbyte_from_b2: + //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 + lda #-2 + sta assert_sbyte.c + //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsz1=vbsc1 + lda #bd + sta assert_sbyte.b + //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg2 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] + b3_from_b2: + jmp b3 + //SEG43 test_sbytes::@3 + b3: + //SEG44 [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] + assert_sbyte_from_b3: + //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsz1=vbsc1 + lda #be + sta assert_sbyte.b + //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg3 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] + b4_from_b3: + jmp b4 + //SEG50 test_sbytes::@4 + b4: + //SEG51 [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] ) + //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] + assert_sbyte_from_b4: + //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsz1=vbsc1 + lda #bf + sta assert_sbyte.b + //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg4 + sta assert_sbyte.msg+1 + jsr assert_sbyte + jmp breturn + //SEG56 test_sbytes::@return + breturn: + //SEG57 [21] return [ ] ( main:2::test_sbytes:9 [ ] ) + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=-2@" + msg3: .text "-(0+2-4)=2@" + msg4: .text "-127-127=2@" +} +//SEG58 assert_sbyte +assert_sbyte: { + .label msg = 2 + .label b = 4 + .label c = 5 + //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda msg + sta print_str.str + lda msg+1 + sta print_str.str+1 + //SEG60 [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG61 [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] + print_str_from_assert_sbyte: + //SEG63 [36] phi (byte*) char_cursor#75 = (byte*~) char_cursor#82 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy + jsr print_str + //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] + b5_from_assert_sbyte: + jmp b5 + //SEG66 assert_sbyte::@5 + b5: + //SEG67 [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] + print_str_from_b5: + //SEG69 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy + //SEG70 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b6 + //SEG71 assert_sbyte::@6 + b6: + //SEG72 [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- vbsz1_eq_vbsz2_then_la1 + lda b + cmp c + beq b1_from_b6 + jmp b3 + //SEG73 assert_sbyte::@3 + b3: + //SEG74 [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- _deref_pbuc1=vbuc2 + lda #RED + sta BGCOL + //SEG75 [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] + print_str_from_b3: + //SEG77 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy + //SEG78 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] + b2_from_b1: + b2_from_b3: + jmp b2 + //SEG80 assert_sbyte::@2 + b2: + //SEG81 [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] + print_ln_from_b2: + //SEG83 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy + jsr print_ln + jmp breturn + //SEG84 assert_sbyte::@return + breturn: + //SEG85 [33] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + rts + //SEG86 [34] phi from assert_sbyte::@6 to assert_sbyte::@1 [phi:assert_sbyte::@6->assert_sbyte::@1] + b1_from_b6: + jmp b1 + //SEG87 assert_sbyte::@1 + b1: + //SEG88 [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] + print_str_from_b1: + //SEG90 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy + //SEG91 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2_from_b1 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +//SEG92 print_str +print_str: { + .label str = 8 + //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + b1_from_print_str: + b1_from_b2: + //SEG94 [37] phi (byte*) char_cursor#2 = (byte*) char_cursor#75 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + jmp b1 + //SEG96 print_str::@1 + b1: + //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + jmp breturn + //SEG98 print_str::@return + breturn: + //SEG99 [39] return [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] ) + rts + //SEG100 print_str::@2 + b2: + //SEG101 [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + ldy #0 + sta (char_cursor),y + //SEG102 [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1_from_b2 +} +//SEG104 print_ln +print_ln: { + //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + b1_from_print_ln: + b1_from_b1: + //SEG106 [44] phi (byte*) line_cursor#21 = (byte*) line_cursor#42 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + jmp b1 + //SEG107 print_ln::@1 + b1: + //SEG108 [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + //SEG109 [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + lda line_cursor+1 + cmp char_cursor+1 + bcc b1_from_b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1_from_b1 + !: + jmp breturn + //SEG110 print_ln::@return + breturn: + //SEG111 [47] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] ) + rts +} +//SEG112 test_bytes +test_bytes: { + .const bb = 0 + .const bc = bb+2 + .const bd = bc-4 + //SEG113 [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] + assert_byte_from_test_bytes: + //SEG115 [55] phi (byte*) line_cursor#45 = ((byte*))(word/signed word) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 + lda #0 + sta assert_byte.c + //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuz1=vbuc1 + lda #bb + sta assert_byte.b + //SEG118 [55] phi (byte*) char_cursor#65 = ((byte*))(word/signed word) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 + lda #msg + sta assert_byte.msg+1 + jsr assert_byte + jmp b1 + //SEG120 test_bytes::@1 + b1: + //SEG121 [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG122 [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] + assert_byte_from_b1: + //SEG124 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy + //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 + lda #2 + sta assert_byte.c + //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuz1=vbuc1 + lda #bc + sta assert_byte.b + //SEG127 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#88 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 + lda #msg1 + sta assert_byte.msg+1 + jsr assert_byte + jmp b2 + //SEG129 test_bytes::@2 + b2: + //SEG130 [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG131 [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] + assert_byte_from_b2: + //SEG133 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy + //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 + lda #$fe + sta assert_byte.c + //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuz1=vbuc1 + lda #bd + sta assert_byte.b + //SEG136 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#89 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 + lda #msg2 + sta assert_byte.msg+1 + jsr assert_byte + jmp breturn + //SEG138 test_bytes::@return + breturn: + //SEG139 [54] return [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=254@" +} +//SEG140 assert_byte +assert_byte: { + .label msg = $c + .label b = $e + .label c = $f + //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) -- pbuz1=pbuz2 + lda msg + sta print_str.str + lda msg+1 + sta print_str.str+1 + //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] + print_str_from_assert_byte: + //SEG144 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#65 [phi:assert_byte->print_str#0] -- register_copy + //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy + jsr print_str + //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] + b5_from_assert_byte: + jmp b5 + //SEG147 assert_byte::@5 + b5: + //SEG148 [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] + print_str_from_b5: + //SEG150 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy + //SEG151 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b6 + //SEG152 assert_byte::@6 + b6: + //SEG153 [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- vbuz1_eq_vbuz2_then_la1 + lda b + cmp c + beq b1_from_b6 + jmp b3 + //SEG154 assert_byte::@3 + b3: + //SEG155 [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- _deref_pbuc1=vbuc2 + lda #RED + sta BGCOL + //SEG156 [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] + print_str_from_b3: + //SEG158 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy + //SEG159 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] + b2_from_b1: + b2_from_b3: + jmp b2 + //SEG161 assert_byte::@2 + b2: + //SEG162 [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] + print_ln_from_b2: + //SEG164 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#45 [phi:assert_byte::@2->print_ln#0] -- register_copy + jsr print_ln + jmp breturn + //SEG165 assert_byte::@return + breturn: + //SEG166 [65] return [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + rts + //SEG167 [66] phi from assert_byte::@6 to assert_byte::@1 [phi:assert_byte::@6->assert_byte::@1] + b1_from_b6: + jmp b1 + //SEG168 assert_byte::@1 + b1: + //SEG169 [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] + print_str_from_b1: + //SEG171 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy + //SEG172 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2_from_b1 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +//SEG173 print_cls +print_cls: { + .label sc = $10 + //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + b1_from_print_cls: + //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + jmp b1 + //SEG176 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + b1_from_b1: + //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + jmp b1 + //SEG178 print_cls::@1 + b1: + //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + ldy #0 + lda #' ' + sta (sc),y + //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG181 [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + lda sc+1 + cmp #>$400+$3e8 + bne b1_from_b1 + lda sc + cmp #<$400+$3e8 + bne b1_from_b1 + jmp breturn + //SEG182 print_cls::@return + breturn: + //SEG183 [73] return [ ] ( main:2::print_cls:5 [ ] ) + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Statement [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) always clobbers reg byte a +Statement [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ assert_sbyte::b#5 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ assert_byte::b#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ assert_byte::b#3 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:15 [ assert_byte::c#3 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:15 [ assert_byte::c#3 ] +Statement [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y +Statement [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) always clobbers reg byte a +Statement [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) always clobbers reg byte a +Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a +Statement [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) always clobbers reg byte a +Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) always clobbers reg byte a +Statement [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) always clobbers reg byte a +Statement [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y +Statement [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) always clobbers reg byte a reg byte y +Statement [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) always clobbers reg byte a +Statement [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) always clobbers reg byte a +Statement [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) always clobbers reg byte a +Statement [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) always clobbers reg byte a +Statement [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) always clobbers reg byte a +Statement [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a +Potential registers zp ZP_WORD:2 [ assert_sbyte::msg#5 ] : zp ZP_WORD:2 , +Potential registers zp ZP_BYTE:4 [ assert_sbyte::b#5 ] : zp ZP_BYTE:4 , reg byte x , +Potential registers zp ZP_BYTE:5 [ assert_sbyte::c#5 ] : zp ZP_BYTE:5 , reg byte x , +Potential registers zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] : zp ZP_WORD:6 , +Potential registers zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] : zp ZP_WORD:8 , +Potential registers zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] : zp ZP_WORD:10 , +Potential registers zp ZP_WORD:12 [ assert_byte::msg#3 ] : zp ZP_WORD:12 , +Potential registers zp ZP_BYTE:14 [ assert_byte::b#3 ] : zp ZP_BYTE:14 , reg byte x , +Potential registers zp ZP_BYTE:15 [ assert_byte::c#3 ] : zp ZP_BYTE:15 , reg byte x , +Potential registers zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] : zp ZP_WORD:16 , + +REGISTER UPLIFT SCOPES +Uplift Scope [] 46.23: zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] 31.8: zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +Uplift Scope [print_str] 45.5: zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] +Uplift Scope [print_cls] 33: zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] +Uplift Scope [assert_byte] 2: zp ZP_WORD:12 [ assert_byte::msg#3 ] 0.4: zp ZP_BYTE:14 [ assert_byte::b#3 ] 0.4: zp ZP_BYTE:15 [ assert_byte::c#3 ] +Uplift Scope [assert_sbyte] 2: zp ZP_WORD:2 [ assert_sbyte::msg#5 ] 0.33: zp ZP_BYTE:4 [ assert_sbyte::b#5 ] 0.33: zp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Uplift Scope [print_ln] +Uplift Scope [main] +Uplift Scope [test_bytes] +Uplift Scope [test_sbytes] + +Uplifting [] best 2311 combination zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] zp ZP_WORD:10 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +Uplifting [print_str] best 2311 combination zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] +Uplifting [print_cls] best 2311 combination zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] +Uplifting [assert_byte] best 2299 combination zp ZP_WORD:12 [ assert_byte::msg#3 ] reg byte x [ assert_byte::b#3 ] zp ZP_BYTE:15 [ assert_byte::c#3 ] +Uplifting [assert_sbyte] best 2291 combination zp ZP_WORD:2 [ assert_sbyte::msg#5 ] reg byte x [ assert_sbyte::b#5 ] zp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Uplifting [print_ln] best 2291 combination +Uplifting [main] best 2291 combination +Uplifting [test_bytes] best 2291 combination +Uplifting [test_sbytes] best 2291 combination +Attempting to uplift remaining variables inzp ZP_BYTE:15 [ assert_byte::c#3 ] +Uplifting [assert_byte] best 2291 combination zp ZP_BYTE:15 [ assert_byte::c#3 ] +Attempting to uplift remaining variables inzp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Uplifting [assert_sbyte] best 2291 combination zp ZP_BYTE:5 [ assert_sbyte::c#5 ] +Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 ] ] with [ zp ZP_WORD:6 [ char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] ] +Coalescing zero page register [ zp ZP_WORD:2 [ assert_sbyte::msg#5 char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 ] ] with [ zp ZP_WORD:16 [ print_cls::sc#2 print_cls::sc#1 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ assert_sbyte::c#5 ] ] with [ zp ZP_BYTE:15 [ assert_byte::c#3 ] ] +Coalescing zero page register [ zp ZP_WORD:8 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 ] ] with [ zp ZP_WORD:12 [ assert_byte::msg#3 ] ] +Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ] +Allocated (was zp ZP_WORD:8) zp ZP_WORD:5 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] +Allocated (was zp ZP_WORD:10) zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const BGCOL = $d021 + .const GREEN = 5 + .const RED = 2 + .label char_cursor = 2 + .label line_cursor = 7 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +b11_from_bbegin: + jmp b11 +//SEG4 @11 +b11: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @11 to main [phi:@11->main] +main_from_b11: + jsr main +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +bend_from_b11: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG11 [68] phi from main to print_cls [phi:main->print_cls] + print_cls_from_main: + jsr print_cls + jmp b1 + //SEG12 main::@1 + b1: + //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #GREEN + sta BGCOL + //SEG14 [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] + test_bytes_from_b1: + jsr test_bytes + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + jmp b2 + //SEG17 main::@2 + b2: + //SEG18 [9] call test_sbytes param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] + test_sbytes_from_b2: + jsr test_sbytes + jmp breturn + //SEG20 main::@return + breturn: + //SEG21 [10] return [ ] ( main:2 [ ] ) + rts +} +//SEG22 test_sbytes +test_sbytes: { + .const bb = 0 + .const bc = bb+2 + .const bf = -$7f-$7f + .const bd = bc-4 + .const be = -bd + //SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] + assert_sbyte_from_test_sbytes: + //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 + lda #0 + sta assert_sbyte.c + //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bb + tax + //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] + b1_from_test_sbytes: + jmp b1 + //SEG29 test_sbytes::@1 + b1: + //SEG30 [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] + assert_sbyte_from_b1: + //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bc + tax + //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg1 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] + b2_from_b1: + jmp b2 + //SEG36 test_sbytes::@2 + b2: + //SEG37 [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] + assert_sbyte_from_b2: + //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 + lda #-2 + sta assert_sbyte.c + //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bd + tax + //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg2 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] + b3_from_b2: + jmp b3 + //SEG43 test_sbytes::@3 + b3: + //SEG44 [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] + assert_sbyte_from_b3: + //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 + lda #be + tax + //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg3 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] + b4_from_b3: + jmp b4 + //SEG50 test_sbytes::@4 + b4: + //SEG51 [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] ) + //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] + assert_sbyte_from_b4: + //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bf + tax + //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg4 + sta assert_sbyte.msg+1 + jsr assert_sbyte + jmp breturn + //SEG56 test_sbytes::@return + breturn: + //SEG57 [21] return [ ] ( main:2::test_sbytes:9 [ ] ) + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=-2@" + msg3: .text "-(0+2-4)=2@" + msg4: .text "-127-127=2@" +} +//SEG58 assert_sbyte +assert_sbyte: { + .label msg = 2 + .label c = 4 + //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda msg + sta print_str.str + lda msg+1 + sta print_str.str+1 + //SEG60 [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG61 [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] + print_str_from_assert_sbyte: + //SEG63 [36] phi (byte*) char_cursor#75 = (byte*~) char_cursor#82 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy + jsr print_str + //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] + b5_from_assert_sbyte: + jmp b5 + //SEG66 assert_sbyte::@5 + b5: + //SEG67 [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] + print_str_from_b5: + //SEG69 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy + //SEG70 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b6 + //SEG71 assert_sbyte::@6 + b6: + //SEG72 [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- vbsxx_eq_vbsz1_then_la1 + cpx c + beq b1_from_b6 + jmp b3 + //SEG73 assert_sbyte::@3 + b3: + //SEG74 [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- _deref_pbuc1=vbuc2 + lda #RED + sta BGCOL + //SEG75 [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] + print_str_from_b3: + //SEG77 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy + //SEG78 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] + b2_from_b1: + b2_from_b3: + jmp b2 + //SEG80 assert_sbyte::@2 + b2: + //SEG81 [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] + print_ln_from_b2: + //SEG83 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy + jsr print_ln + jmp breturn + //SEG84 assert_sbyte::@return + breturn: + //SEG85 [33] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + rts + //SEG86 [34] phi from assert_sbyte::@6 to assert_sbyte::@1 [phi:assert_sbyte::@6->assert_sbyte::@1] + b1_from_b6: + jmp b1 + //SEG87 assert_sbyte::@1 + b1: + //SEG88 [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] + print_str_from_b1: + //SEG90 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy + //SEG91 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2_from_b1 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +//SEG92 print_str +print_str: { + .label str = 5 + //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + b1_from_print_str: + b1_from_b2: + //SEG94 [37] phi (byte*) char_cursor#2 = (byte*) char_cursor#75 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + jmp b1 + //SEG96 print_str::@1 + b1: + //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + jmp breturn + //SEG98 print_str::@return + breturn: + //SEG99 [39] return [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] ) + rts + //SEG100 print_str::@2 + b2: + //SEG101 [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + ldy #0 + sta (char_cursor),y + //SEG102 [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1_from_b2 +} +//SEG104 print_ln +print_ln: { + //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + b1_from_print_ln: + b1_from_b1: + //SEG106 [44] phi (byte*) line_cursor#21 = (byte*) line_cursor#42 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + jmp b1 + //SEG107 print_ln::@1 + b1: + //SEG108 [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + //SEG109 [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + lda line_cursor+1 + cmp char_cursor+1 + bcc b1_from_b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1_from_b1 + !: + jmp breturn + //SEG110 print_ln::@return + breturn: + //SEG111 [47] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] ) + rts +} +//SEG112 test_bytes +test_bytes: { + .const bb = 0 + .const bc = bb+2 + .const bd = bc-4 + //SEG113 [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] + assert_byte_from_test_bytes: + //SEG115 [55] phi (byte*) line_cursor#45 = ((byte*))(word/signed word) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 + lda #0 + sta assert_byte.c + //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 + ldx #bb + //SEG118 [55] phi (byte*) char_cursor#65 = ((byte*))(word/signed word) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 + lda #msg + sta assert_byte.msg+1 + jsr assert_byte + jmp b1 + //SEG120 test_bytes::@1 + b1: + //SEG121 [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG122 [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] + assert_byte_from_b1: + //SEG124 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy + //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 + lda #2 + sta assert_byte.c + //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 + ldx #bc + //SEG127 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#88 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 + lda #msg1 + sta assert_byte.msg+1 + jsr assert_byte + jmp b2 + //SEG129 test_bytes::@2 + b2: + //SEG130 [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG131 [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] + assert_byte_from_b2: + //SEG133 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy + //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 + lda #$fe + sta assert_byte.c + //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 + ldx #bd + //SEG136 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#89 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 + lda #msg2 + sta assert_byte.msg+1 + jsr assert_byte + jmp breturn + //SEG138 test_bytes::@return + breturn: + //SEG139 [54] return [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=254@" +} +//SEG140 assert_byte +assert_byte: { + .label msg = 5 + .label c = 4 + //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + // (byte*) print_str::str#1 = (byte*) assert_byte::msg#3 // register copy zp ZP_WORD:5 + //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] + print_str_from_assert_byte: + //SEG144 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#65 [phi:assert_byte->print_str#0] -- register_copy + //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy + jsr print_str + //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] + b5_from_assert_byte: + jmp b5 + //SEG147 assert_byte::@5 + b5: + //SEG148 [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] + print_str_from_b5: + //SEG150 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy + //SEG151 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + jmp b6 + //SEG152 assert_byte::@6 + b6: + //SEG153 [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- vbuxx_eq_vbuz1_then_la1 + cpx c + beq b1_from_b6 + jmp b3 + //SEG154 assert_byte::@3 + b3: + //SEG155 [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- _deref_pbuc1=vbuc2 + lda #RED + sta BGCOL + //SEG156 [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] + print_str_from_b3: + //SEG158 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy + //SEG159 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] + b2_from_b1: + b2_from_b3: + jmp b2 + //SEG161 assert_byte::@2 + b2: + //SEG162 [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] + print_ln_from_b2: + //SEG164 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#45 [phi:assert_byte::@2->print_ln#0] -- register_copy + jsr print_ln + jmp breturn + //SEG165 assert_byte::@return + breturn: + //SEG166 [65] return [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + rts + //SEG167 [66] phi from assert_byte::@6 to assert_byte::@1 [phi:assert_byte::@6->assert_byte::@1] + b1_from_b6: + jmp b1 + //SEG168 assert_byte::@1 + b1: + //SEG169 [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] + print_str_from_b1: + //SEG171 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy + //SEG172 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2_from_b1 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +//SEG173 print_cls +print_cls: { + .label sc = 2 + //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + b1_from_print_cls: + //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + jmp b1 + //SEG176 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + b1_from_b1: + //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + jmp b1 + //SEG178 print_cls::@1 + b1: + //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + ldy #0 + lda #' ' + sta (sc),y + //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG181 [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + lda sc+1 + cmp #>$400+$3e8 + bne b1_from_b1 + lda sc + cmp #<$400+$3e8 + bne b1_from_b1 + jmp breturn + //SEG182 print_cls::@return + breturn: + //SEG183 [73] return [ ] ( main:2::print_cls:5 [ ] ) + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b11 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp b4 +Removing instruction jmp breturn +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b5 +Removing instruction jmp b6 +Removing instruction jmp b3 +Removing instruction jmp b2 +Removing instruction jmp breturn +Removing instruction jmp b1 +Removing instruction jmp b1 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction ldy #0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b6 with b1 +Replacing label b2_from_b1 with b2 +Replacing label b1_from_b2 with b1 +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b6 with b1 +Replacing label b2_from_b1 with b2 +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b1 with b1 +Removing instruction bbegin: +Removing instruction b11_from_bbegin: +Removing instruction main_from_b11: +Removing instruction bend_from_b11: +Removing instruction b2_from_b1: +Removing instruction test_sbytes_from_b2: +Removing instruction b1_from_test_sbytes: +Removing instruction assert_sbyte_from_b1: +Removing instruction b2_from_b1: +Removing instruction assert_sbyte_from_b2: +Removing instruction b3_from_b2: +Removing instruction assert_sbyte_from_b3: +Removing instruction b4_from_b3: +Removing instruction assert_sbyte_from_b4: +Removing instruction b5_from_assert_sbyte: +Removing instruction print_str_from_b5: +Removing instruction b2_from_b1: +Removing instruction b2_from_b3: +Removing instruction print_ln_from_b2: +Removing instruction b1_from_b6: +Removing instruction print_str_from_b1: +Removing instruction b1_from_print_str: +Removing instruction b1_from_b2: +Removing instruction b1_from_print_ln: +Removing instruction b1_from_b1: +Removing instruction b5_from_assert_byte: +Removing instruction print_str_from_b5: +Removing instruction b2_from_b1: +Removing instruction b2_from_b3: +Removing instruction print_ln_from_b2: +Removing instruction b1_from_b6: +Removing instruction print_str_from_b1: +Removing instruction b1_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b11: +Removing instruction bend: +Removing instruction print_cls_from_main: +Removing instruction b1: +Removing instruction test_bytes_from_b1: +Removing instruction b2: +Removing instruction breturn: +Removing instruction assert_sbyte_from_test_sbytes: +Removing instruction b1: +Removing instruction b2: +Removing instruction b3: +Removing instruction b4: +Removing instruction breturn: +Removing instruction print_str_from_assert_sbyte: +Removing instruction b5: +Removing instruction b6: +Removing instruction b3: +Removing instruction print_str_from_b3: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction breturn: +Removing instruction assert_byte_from_test_bytes: +Removing instruction b1: +Removing instruction assert_byte_from_b1: +Removing instruction b2: +Removing instruction assert_byte_from_b2: +Removing instruction breturn: +Removing instruction print_str_from_assert_byte: +Removing instruction b5: +Removing instruction b6: +Removing instruction b3: +Removing instruction print_str_from_b3: +Removing instruction breturn: +Removing instruction b1_from_print_cls: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination + +FINAL SYMBOL TABLE +(label) @11 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53281 +(byte) GREEN +(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word) 5 +(byte) RED +(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 +(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) +(label) assert_byte::@1 +(label) assert_byte::@2 +(label) assert_byte::@3 +(label) assert_byte::@5 +(label) assert_byte::@6 +(label) assert_byte::@return +(byte) assert_byte::b +(byte) assert_byte::b#3 reg byte x 0.4 +(byte) assert_byte::c +(byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4 +(byte*) assert_byte::msg +(byte*) assert_byte::msg#3 msg zp ZP_WORD:5 2.0 +(const byte[]) assert_byte::str str = (string) " @" +(const byte[]) assert_byte::str1 str1 = (string) "ok@" +(const byte[]) assert_byte::str2 str2 = (string) "fail!@" +(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) +(label) assert_sbyte::@1 +(label) assert_sbyte::@2 +(label) assert_sbyte::@3 +(label) assert_sbyte::@5 +(label) assert_sbyte::@6 +(label) assert_sbyte::@return +(signed byte) assert_sbyte::b +(signed byte) assert_sbyte::b#5 reg byte x 0.3333333333333333 +(signed byte) assert_sbyte::c +(signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333 +(byte*) assert_sbyte::msg +(byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0 +(const byte[]) assert_sbyte::str str = (string) " @" +(const byte[]) assert_sbyte::str1 str1 = (string) "ok@" +(const byte[]) assert_sbyte::str2 str2 = (string) "fail!@" +(byte*) char_cursor +(byte*) char_cursor#1 char_cursor zp ZP_WORD:2 11.0 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:2 2.230769230769231 +(byte*) char_cursor#65 char_cursor zp ZP_WORD:2 3.0 +(byte*) char_cursor#75 char_cursor zp ZP_WORD:2 18.0 +(byte*~) char_cursor#82 char_cursor zp ZP_WORD:2 4.0 +(byte*~) char_cursor#88 char_cursor zp ZP_WORD:2 4.0 +(byte*~) char_cursor#89 char_cursor zp ZP_WORD:2 4.0 +(byte*) line_cursor +(byte*) line_cursor#1 line_cursor zp ZP_WORD:7 1.2500000000000002 +(byte*) line_cursor#21 line_cursor zp ZP_WORD:7 24.0 +(byte*) line_cursor#42 line_cursor zp ZP_WORD:7 6.0 +(byte*) line_cursor#45 line_cursor zp ZP_WORD:7 0.5454545454545454 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(void()) print_cls() +(label) print_cls::@1 +(label) print_cls::@return +(byte*) print_cls::sc +(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 +(void()) print_ln() +(label) print_ln::@1 +(label) print_ln::@return +(void()) print_str((byte*) print_str::str) +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@return +(byte*) print_str::str +(byte*) print_str::str#0 str zp ZP_WORD:5 22.0 +(byte*) print_str::str#1 str zp ZP_WORD:5 4.0 +(byte*) print_str::str#10 str zp ZP_WORD:5 11.5 +(byte*) print_str::str#11 str zp ZP_WORD:5 6.0 +(byte*) print_str::str#5 str zp ZP_WORD:5 2.0 +(void()) test_bytes() +(label) test_bytes::@1 +(label) test_bytes::@2 +(label) test_bytes::@return +(byte) test_bytes::bb +(const byte) test_bytes::bb#0 bb = (byte/signed byte/word/signed word) 0 +(byte) test_bytes::bc +(const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word) 2 +(byte) test_bytes::bd +(const byte) test_bytes::bd#0 bd = (const byte) test_bytes::bc#0-(byte/signed byte/word/signed word) 4 +(const byte[]) test_bytes::msg msg = (string) "0=0@" +(const byte[]) test_bytes::msg1 msg1 = (string) "0+2=2@" +(const byte[]) test_bytes::msg2 msg2 = (string) "0+2-4=254@" +(void()) test_sbytes() +(label) test_sbytes::@1 +(label) test_sbytes::@2 +(label) test_sbytes::@3 +(label) test_sbytes::@4 +(label) test_sbytes::@return +(signed byte) test_sbytes::bb +(const signed byte) test_sbytes::bb#0 bb = (byte/signed byte/word/signed word) 0 +(signed byte) test_sbytes::bc +(const signed byte) test_sbytes::bc#0 bc = (const signed byte) test_sbytes::bb#0+(byte/signed byte/word/signed word) 2 +(signed byte) test_sbytes::bd +(const signed byte) test_sbytes::bd#0 bd = (const signed byte) test_sbytes::bc#0-(byte/signed byte/word/signed word) 4 +(signed byte) test_sbytes::be +(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0 +(signed byte) test_sbytes::bf +(const signed byte) test_sbytes::bf#0 bf = -(byte/signed byte/word/signed word) 127-(byte/signed byte/word/signed word) 127 +(const byte[]) test_sbytes::msg msg = (string) "0=0@" +(const byte[]) test_sbytes::msg1 msg1 = (string) "0+2=2@" +(const byte[]) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@" +(const byte[]) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@" +(const byte[]) test_sbytes::msg4 msg4 = (string) "-127-127=2@" + +zp ZP_WORD:2 [ assert_sbyte::msg#5 char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 print_cls::sc#2 print_cls::sc#1 ] +reg byte x [ assert_sbyte::b#5 ] +zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ] +zp ZP_WORD:5 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] +zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +reg byte x [ assert_byte::b#3 ] + +FINAL CODE +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const BGCOL = $d021 + .const GREEN = 5 + .const RED = 2 + .label char_cursor = 2 + .label line_cursor = 7 +//SEG2 @begin +//SEG3 [1] phi from @begin to @11 [phi:@begin->@11] +//SEG4 @11 +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @11 to main [phi:@11->main] + jsr main +//SEG7 [3] phi from @11 to @end [phi:@11->@end] +//SEG8 @end +//SEG9 main +main: { + //SEG10 [5] call print_cls param-assignment [ ] ( main:2 [ ] ) + //SEG11 [68] phi from main to print_cls [phi:main->print_cls] + jsr print_cls + //SEG12 main::@1 + //SEG13 [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + lda #GREEN + sta BGCOL + //SEG14 [7] call test_bytes param-assignment [ line_cursor#1 ] ( main:2 [ line_cursor#1 ] ) + //SEG15 [48] phi from main::@1 to test_bytes [phi:main::@1->test_bytes] + jsr test_bytes + //SEG16 [8] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG17 main::@2 + //SEG18 [9] call test_sbytes param-assignment [ ] ( main:2 [ ] ) + //SEG19 [11] phi from main::@2 to test_sbytes [phi:main::@2->test_sbytes] + jsr test_sbytes + //SEG20 main::@return + //SEG21 [10] return [ ] ( main:2 [ ] ) + rts +} +//SEG22 test_sbytes +test_sbytes: { + .const bb = 0 + .const bc = bb+2 + .const bf = -$7f-$7f + .const bd = bc-4 + .const be = -bd + //SEG23 [12] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG24 [22] phi from test_sbytes to assert_sbyte [phi:test_sbytes->assert_sbyte] + //SEG25 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 0 [phi:test_sbytes->assert_sbyte#0] -- vbsz1=vbuc1 + lda #0 + sta assert_sbyte.c + //SEG26 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bb + tax + //SEG27 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG28 [13] phi from test_sbytes to test_sbytes::@1 [phi:test_sbytes->test_sbytes::@1] + //SEG29 test_sbytes::@1 + //SEG30 [14] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG31 [22] phi from test_sbytes::@1 to assert_sbyte [phi:test_sbytes::@1->assert_sbyte] + //SEG32 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@1->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG33 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bc + tax + //SEG34 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg1 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG35 [15] phi from test_sbytes::@1 to test_sbytes::@2 [phi:test_sbytes::@1->test_sbytes::@2] + //SEG36 test_sbytes::@2 + //SEG37 [16] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG38 [22] phi from test_sbytes::@2 to assert_sbyte [phi:test_sbytes::@2->assert_sbyte] + //SEG39 [22] phi (signed byte) assert_sbyte::c#5 = -(byte/signed byte/word/signed word) 2 [phi:test_sbytes::@2->assert_sbyte#0] -- vbsz1=vbsc1 + lda #-2 + sta assert_sbyte.c + //SEG40 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bd#0 [phi:test_sbytes::@2->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bd + tax + //SEG41 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg2 [phi:test_sbytes::@2->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg2 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG42 [17] phi from test_sbytes::@2 to test_sbytes::@3 [phi:test_sbytes::@2->test_sbytes::@3] + //SEG43 test_sbytes::@3 + //SEG44 [18] call assert_sbyte param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9 [ line_cursor#1 ] ) + //SEG45 [22] phi from test_sbytes::@3 to assert_sbyte [phi:test_sbytes::@3->assert_sbyte] + //SEG46 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@3->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG47 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::be#0 [phi:test_sbytes::@3->assert_sbyte#1] -- vbsxx=vbsc1 + lda #be + tax + //SEG48 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg3 [phi:test_sbytes::@3->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg3 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG49 [19] phi from test_sbytes::@3 to test_sbytes::@4 [phi:test_sbytes::@3->test_sbytes::@4] + //SEG50 test_sbytes::@4 + //SEG51 [20] call assert_sbyte param-assignment [ ] ( main:2::test_sbytes:9 [ ] ) + //SEG52 [22] phi from test_sbytes::@4 to assert_sbyte [phi:test_sbytes::@4->assert_sbyte] + //SEG53 [22] phi (signed byte) assert_sbyte::c#5 = (byte/signed byte/word/signed word) 2 [phi:test_sbytes::@4->assert_sbyte#0] -- vbsz1=vbuc1 + lda #2 + sta assert_sbyte.c + //SEG54 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bf#0 [phi:test_sbytes::@4->assert_sbyte#1] -- vbsxx=vbsc1 + lda #bf + tax + //SEG55 [22] phi (byte*) assert_sbyte::msg#5 = (const byte[]) test_sbytes::msg4 [phi:test_sbytes::@4->assert_sbyte#2] -- pbuz1=pbuc1 + lda #msg4 + sta assert_sbyte.msg+1 + jsr assert_sbyte + //SEG56 test_sbytes::@return + //SEG57 [21] return [ ] ( main:2::test_sbytes:9 [ ] ) + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=-2@" + msg3: .text "-(0+2-4)=2@" + msg4: .text "-127-127=2@" +} +//SEG58 assert_sbyte +assert_sbyte: { + .label msg = 2 + .label c = 4 + //SEG59 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda msg + sta print_str.str + lda msg+1 + sta print_str.str+1 + //SEG60 [24] (byte*~) char_cursor#82 ← (byte*) line_cursor#1 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 print_str::str#5 char_cursor#82 line_cursor#1 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG61 [25] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + //SEG62 [36] phi from assert_sbyte to print_str [phi:assert_sbyte->print_str] + //SEG63 [36] phi (byte*) char_cursor#75 = (byte*~) char_cursor#82 [phi:assert_sbyte->print_str#0] -- register_copy + //SEG64 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#5 [phi:assert_sbyte->print_str#1] -- register_copy + jsr print_str + //SEG65 [26] phi from assert_sbyte to assert_sbyte::@5 [phi:assert_sbyte->assert_sbyte::@5] + //SEG66 assert_sbyte::@5 + //SEG67 [27] call print_str param-assignment [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] ) + //SEG68 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] + //SEG69 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy + //SEG70 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG71 assert_sbyte::@6 + //SEG72 [28] if((signed byte) assert_sbyte::b#5==(signed byte) assert_sbyte::c#5) goto assert_sbyte::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- vbsxx_eq_vbsz1_then_la1 + cpx c + beq b1 + //SEG73 assert_sbyte::@3 + //SEG74 [29] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) -- _deref_pbuc1=vbuc2 + lda #RED + sta BGCOL + //SEG75 [30] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + //SEG76 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] + //SEG77 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy + //SEG78 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG79 [31] phi from assert_sbyte::@1 assert_sbyte::@3 to assert_sbyte::@2 [phi:assert_sbyte::@1/assert_sbyte::@3->assert_sbyte::@2] + //SEG80 assert_sbyte::@2 + b2: + //SEG81 [32] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + //SEG82 [43] phi from assert_sbyte::@2 to print_ln [phi:assert_sbyte::@2->print_ln] + //SEG83 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#1 [phi:assert_sbyte::@2->print_ln#0] -- register_copy + jsr print_ln + //SEG84 assert_sbyte::@return + //SEG85 [33] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 ] ) + rts + //SEG86 [34] phi from assert_sbyte::@6 to assert_sbyte::@1 [phi:assert_sbyte::@6->assert_sbyte::@1] + //SEG87 assert_sbyte::@1 + b1: + //SEG88 [35] call print_str param-assignment [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20 [ line_cursor#1 char_cursor#2 ] ) + //SEG89 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] + //SEG90 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy + //SEG91 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +//SEG92 print_str +print_str: { + .label str = 5 + //SEG93 [37] phi from print_str print_str::@2 to print_str::@1 [phi:print_str/print_str::@2->print_str::@1] + //SEG94 [37] phi (byte*) char_cursor#2 = (byte*) char_cursor#75 [phi:print_str/print_str::@2->print_str::@1#0] -- register_copy + //SEG95 [37] phi (byte*) print_str::str#10 = (byte*) print_str::str#11 [phi:print_str/print_str::@2->print_str::@1#1] -- register_copy + //SEG96 print_str::@1 + b1: + //SEG97 [38] if(*((byte*) print_str::str#10)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1 + ldy #0 + lda (str),y + cmp #'@' + bne b2 + //SEG98 print_str::@return + //SEG99 [39] return [ char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 ] ) + rts + //SEG100 print_str::@2 + b2: + //SEG101 [40] *((byte*) char_cursor#2) ← *((byte*) print_str::str#10) [ char_cursor#2 print_str::str#10 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 char_cursor#2 print_str::str#10 ] ) -- _deref_pbuz1=_deref_pbuz2 + ldy #0 + lda (str),y + sta (char_cursor),y + //SEG102 [41] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#10 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#10 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc char_cursor + bne !+ + inc char_cursor+1 + !: + //SEG103 [42] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#10 [ print_str::str#0 char_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:25 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:27 [ assert_sbyte::b#5 assert_sbyte::c#5 line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:30 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:12::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_str:35 [ line_cursor#1 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:57 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:59 [ line_cursor#45 assert_byte::b#3 assert_byte::c#3 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:62 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_str:67 [ line_cursor#45 print_str::str#0 char_cursor#1 ] ) -- pbuz1=_inc_pbuz1 + inc str + bne !+ + inc str+1 + !: + jmp b1 +} +//SEG104 print_ln +print_ln: { + //SEG105 [44] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1] + //SEG106 [44] phi (byte*) line_cursor#21 = (byte*) line_cursor#42 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy + //SEG107 print_ln::@1 + b1: + //SEG108 [45] (byte*) line_cursor#1 ← (byte*) line_cursor#21 + (byte/signed byte/word/signed word) 40 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda line_cursor + clc + adc #$28 + sta line_cursor + bcc !+ + inc line_cursor+1 + !: + //SEG109 [46] if((byte*) line_cursor#1<(byte*) char_cursor#2) goto print_ln::@1 [ line_cursor#1 char_cursor#2 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 char_cursor#2 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 char_cursor#2 ] ) -- pbuz1_lt_pbuz2_then_la1 + lda line_cursor+1 + cmp char_cursor+1 + bcc b1 + bne !+ + lda line_cursor + cmp char_cursor + bcc b1 + !: + //SEG110 print_ln::@return + //SEG111 [47] return [ line_cursor#1 ] ( main:2::test_sbytes:9::assert_sbyte:12::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:14::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:16::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:18::print_ln:32 [ line_cursor#1 ] main:2::test_sbytes:9::assert_sbyte:20::print_ln:32 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:49::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51::print_ln:64 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53::print_ln:64 [ line_cursor#1 ] ) + rts +} +//SEG112 test_bytes +test_bytes: { + .const bb = 0 + .const bc = bb+2 + .const bd = bc-4 + //SEG113 [49] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG114 [55] phi from test_bytes to assert_byte [phi:test_bytes->assert_byte] + //SEG115 [55] phi (byte*) line_cursor#45 = ((byte*))(word/signed word) 1024 [phi:test_bytes->assert_byte#0] -- pbuz1=pbuc1 + lda #<$400 + sta line_cursor + lda #>$400 + sta line_cursor+1 + //SEG116 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word) 0 [phi:test_bytes->assert_byte#1] -- vbuz1=vbuc1 + lda #0 + sta assert_byte.c + //SEG117 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bb#0 [phi:test_bytes->assert_byte#2] -- vbuxx=vbuc1 + ldx #bb + //SEG118 [55] phi (byte*) char_cursor#65 = ((byte*))(word/signed word) 1024 [phi:test_bytes->assert_byte#3] -- pbuz1=pbuc1 + lda #<$400 + sta char_cursor + lda #>$400 + sta char_cursor+1 + //SEG119 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 + lda #msg + sta assert_byte.msg+1 + jsr assert_byte + //SEG120 test_bytes::@1 + //SEG121 [50] (byte*~) char_cursor#88 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#88 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#88 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG122 [51] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG123 [55] phi from test_bytes::@1 to assert_byte [phi:test_bytes::@1->assert_byte] + //SEG124 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@1->assert_byte#0] -- register_copy + //SEG125 [55] phi (byte) assert_byte::c#3 = (byte/signed byte/word/signed word) 2 [phi:test_bytes::@1->assert_byte#1] -- vbuz1=vbuc1 + lda #2 + sta assert_byte.c + //SEG126 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 + ldx #bc + //SEG127 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#88 [phi:test_bytes::@1->assert_byte#3] -- register_copy + //SEG128 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 + lda #msg1 + sta assert_byte.msg+1 + jsr assert_byte + //SEG129 test_bytes::@2 + //SEG130 [52] (byte*~) char_cursor#89 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#89 ] ( main:2::test_bytes:7 [ line_cursor#1 char_cursor#89 ] ) -- pbuz1=pbuz2 + lda line_cursor + sta char_cursor + lda line_cursor+1 + sta char_cursor+1 + //SEG131 [53] call assert_byte param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + //SEG132 [55] phi from test_bytes::@2 to assert_byte [phi:test_bytes::@2->assert_byte] + //SEG133 [55] phi (byte*) line_cursor#45 = (byte*) line_cursor#1 [phi:test_bytes::@2->assert_byte#0] -- register_copy + //SEG134 [55] phi (byte) assert_byte::c#3 = (byte/word/signed word) 254 [phi:test_bytes::@2->assert_byte#1] -- vbuz1=vbuc1 + lda #$fe + sta assert_byte.c + //SEG135 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bd#0 [phi:test_bytes::@2->assert_byte#2] -- vbuxx=vbuc1 + ldx #bd + //SEG136 [55] phi (byte*) char_cursor#65 = (byte*~) char_cursor#89 [phi:test_bytes::@2->assert_byte#3] -- register_copy + //SEG137 [55] phi (byte*) assert_byte::msg#3 = (const byte[]) test_bytes::msg2 [phi:test_bytes::@2->assert_byte#4] -- pbuz1=pbuc1 + lda #msg2 + sta assert_byte.msg+1 + jsr assert_byte + //SEG138 test_bytes::@return + //SEG139 [54] return [ line_cursor#1 ] ( main:2::test_bytes:7 [ line_cursor#1 ] ) + rts + msg: .text "0=0@" + msg1: .text "0+2=2@" + msg2: .text "0+2-4=254@" +} +//SEG140 assert_byte +assert_byte: { + .label msg = 5 + .label c = 4 + //SEG141 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ print_str::str#1 char_cursor#65 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + // (byte*) print_str::str#1 = (byte*) assert_byte::msg#3 // register copy zp ZP_WORD:5 + //SEG142 [57] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + //SEG143 [36] phi from assert_byte to print_str [phi:assert_byte->print_str] + //SEG144 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#65 [phi:assert_byte->print_str#0] -- register_copy + //SEG145 [36] phi (byte*) print_str::str#11 = (byte*) print_str::str#1 [phi:assert_byte->print_str#1] -- register_copy + jsr print_str + //SEG146 [58] phi from assert_byte to assert_byte::@5 [phi:assert_byte->assert_byte::@5] + //SEG147 assert_byte::@5 + //SEG148 [59] call print_str param-assignment [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 assert_byte::b#3 assert_byte::c#3 ] ) + //SEG149 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] + //SEG150 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy + //SEG151 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 + lda #str + sta print_str.str+1 + jsr print_str + //SEG152 assert_byte::@6 + //SEG153 [60] if((byte) assert_byte::b#3==(byte) assert_byte::c#3) goto assert_byte::@1 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- vbuxx_eq_vbuz1_then_la1 + cpx c + beq b1 + //SEG154 assert_byte::@3 + //SEG155 [61] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) -- _deref_pbuc1=vbuc2 + lda #RED + sta BGCOL + //SEG156 [62] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + //SEG157 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] + //SEG158 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy + //SEG159 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 + lda #str2 + sta print_str.str+1 + jsr print_str + //SEG160 [63] phi from assert_byte::@1 assert_byte::@3 to assert_byte::@2 [phi:assert_byte::@1/assert_byte::@3->assert_byte::@2] + //SEG161 assert_byte::@2 + b2: + //SEG162 [64] call print_ln param-assignment [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + //SEG163 [43] phi from assert_byte::@2 to print_ln [phi:assert_byte::@2->print_ln] + //SEG164 [43] phi (byte*) line_cursor#42 = (byte*) line_cursor#45 [phi:assert_byte::@2->print_ln#0] -- register_copy + jsr print_ln + //SEG165 assert_byte::@return + //SEG166 [65] return [ line_cursor#1 ] ( main:2::test_bytes:7::assert_byte:49 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:51 [ line_cursor#1 ] main:2::test_bytes:7::assert_byte:53 [ line_cursor#1 ] ) + rts + //SEG167 [66] phi from assert_byte::@6 to assert_byte::@1 [phi:assert_byte::@6->assert_byte::@1] + //SEG168 assert_byte::@1 + b1: + //SEG169 [67] call print_str param-assignment [ char_cursor#2 line_cursor#45 ] ( main:2::test_bytes:7::assert_byte:49 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:51 [ char_cursor#2 line_cursor#45 ] main:2::test_bytes:7::assert_byte:53 [ char_cursor#2 line_cursor#45 ] ) + //SEG170 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] + //SEG171 [36] phi (byte*) char_cursor#75 = (byte*) char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy + //SEG172 [36] phi (byte*) print_str::str#11 = (const byte[]) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 + lda #str1 + sta print_str.str+1 + jsr print_str + jmp b2 + str: .text " @" + str1: .text "ok@" + str2: .text "fail!@" +} +//SEG173 print_cls +print_cls: { + .label sc = 2 + //SEG174 [69] phi from print_cls to print_cls::@1 [phi:print_cls->print_cls::@1] + //SEG175 [69] phi (byte*) print_cls::sc#2 = ((byte*))(word/signed word) 1024 [phi:print_cls->print_cls::@1#0] -- pbuz1=pbuc1 + lda #<$400 + sta sc + lda #>$400 + sta sc+1 + //SEG176 [69] phi from print_cls::@1 to print_cls::@1 [phi:print_cls::@1->print_cls::@1] + //SEG177 [69] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#1 [phi:print_cls::@1->print_cls::@1#0] -- register_copy + //SEG178 print_cls::@1 + b1: + //SEG179 [70] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1 + ldy #0 + lda #' ' + sta (sc),y + //SEG180 [71] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1 + inc sc + bne !+ + inc sc+1 + !: + //SEG181 [72] if((byte*) print_cls::sc#1!=(word/signed word) 1024+(word/signed word) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) -- pbuz1_neq_vwuc1_then_la1 + lda sc+1 + cmp #>$400+$3e8 + bne b1 + lda sc + cmp #<$400+$3e8 + bne b1 + //SEG182 print_cls::@return + //SEG183 [73] return [ ] ( main:2::print_cls:5 [ ] ) + rts +} + diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constants.sym b/src/main/java/dk/camelot64/kickc/test/ref/constants.sym new file mode 100644 index 000000000..a680e7a97 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/constants.sym @@ -0,0 +1,118 @@ +(label) @11 +(label) @begin +(label) @end +(byte*) BGCOL +(const byte*) BGCOL#0 BGCOL = ((byte*))(word) 53281 +(byte) GREEN +(const byte) GREEN#0 GREEN = (byte/signed byte/word/signed word) 5 +(byte) RED +(const byte) RED#0 RED = (byte/signed byte/word/signed word) 2 +(void()) assert_byte((byte*) assert_byte::msg , (byte) assert_byte::b , (byte) assert_byte::c) +(label) assert_byte::@1 +(label) assert_byte::@2 +(label) assert_byte::@3 +(label) assert_byte::@5 +(label) assert_byte::@6 +(label) assert_byte::@return +(byte) assert_byte::b +(byte) assert_byte::b#3 reg byte x 0.4 +(byte) assert_byte::c +(byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4 +(byte*) assert_byte::msg +(byte*) assert_byte::msg#3 msg zp ZP_WORD:5 2.0 +(const byte[]) assert_byte::str str = (string) " @" +(const byte[]) assert_byte::str1 str1 = (string) "ok@" +(const byte[]) assert_byte::str2 str2 = (string) "fail!@" +(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) +(label) assert_sbyte::@1 +(label) assert_sbyte::@2 +(label) assert_sbyte::@3 +(label) assert_sbyte::@5 +(label) assert_sbyte::@6 +(label) assert_sbyte::@return +(signed byte) assert_sbyte::b +(signed byte) assert_sbyte::b#5 reg byte x 0.3333333333333333 +(signed byte) assert_sbyte::c +(signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333 +(byte*) assert_sbyte::msg +(byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0 +(const byte[]) assert_sbyte::str str = (string) " @" +(const byte[]) assert_sbyte::str1 str1 = (string) "ok@" +(const byte[]) assert_sbyte::str2 str2 = (string) "fail!@" +(byte*) char_cursor +(byte*) char_cursor#1 char_cursor zp ZP_WORD:2 11.0 +(byte*) char_cursor#2 char_cursor zp ZP_WORD:2 2.230769230769231 +(byte*) char_cursor#65 char_cursor zp ZP_WORD:2 3.0 +(byte*) char_cursor#75 char_cursor zp ZP_WORD:2 18.0 +(byte*~) char_cursor#82 char_cursor zp ZP_WORD:2 4.0 +(byte*~) char_cursor#88 char_cursor zp ZP_WORD:2 4.0 +(byte*~) char_cursor#89 char_cursor zp ZP_WORD:2 4.0 +(byte*) line_cursor +(byte*) line_cursor#1 line_cursor zp ZP_WORD:7 1.2500000000000002 +(byte*) line_cursor#21 line_cursor zp ZP_WORD:7 24.0 +(byte*) line_cursor#42 line_cursor zp ZP_WORD:7 6.0 +(byte*) line_cursor#45 line_cursor zp ZP_WORD:7 0.5454545454545454 +(void()) main() +(label) main::@1 +(label) main::@2 +(label) main::@return +(void()) print_cls() +(label) print_cls::@1 +(label) print_cls::@return +(byte*) print_cls::sc +(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 +(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 +(void()) print_ln() +(label) print_ln::@1 +(label) print_ln::@return +(void()) print_str((byte*) print_str::str) +(label) print_str::@1 +(label) print_str::@2 +(label) print_str::@return +(byte*) print_str::str +(byte*) print_str::str#0 str zp ZP_WORD:5 22.0 +(byte*) print_str::str#1 str zp ZP_WORD:5 4.0 +(byte*) print_str::str#10 str zp ZP_WORD:5 11.5 +(byte*) print_str::str#11 str zp ZP_WORD:5 6.0 +(byte*) print_str::str#5 str zp ZP_WORD:5 2.0 +(void()) test_bytes() +(label) test_bytes::@1 +(label) test_bytes::@2 +(label) test_bytes::@return +(byte) test_bytes::bb +(const byte) test_bytes::bb#0 bb = (byte/signed byte/word/signed word) 0 +(byte) test_bytes::bc +(const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word) 2 +(byte) test_bytes::bd +(const byte) test_bytes::bd#0 bd = (const byte) test_bytes::bc#0-(byte/signed byte/word/signed word) 4 +(const byte[]) test_bytes::msg msg = (string) "0=0@" +(const byte[]) test_bytes::msg1 msg1 = (string) "0+2=2@" +(const byte[]) test_bytes::msg2 msg2 = (string) "0+2-4=254@" +(void()) test_sbytes() +(label) test_sbytes::@1 +(label) test_sbytes::@2 +(label) test_sbytes::@3 +(label) test_sbytes::@4 +(label) test_sbytes::@return +(signed byte) test_sbytes::bb +(const signed byte) test_sbytes::bb#0 bb = (byte/signed byte/word/signed word) 0 +(signed byte) test_sbytes::bc +(const signed byte) test_sbytes::bc#0 bc = (const signed byte) test_sbytes::bb#0+(byte/signed byte/word/signed word) 2 +(signed byte) test_sbytes::bd +(const signed byte) test_sbytes::bd#0 bd = (const signed byte) test_sbytes::bc#0-(byte/signed byte/word/signed word) 4 +(signed byte) test_sbytes::be +(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0 +(signed byte) test_sbytes::bf +(const signed byte) test_sbytes::bf#0 bf = -(byte/signed byte/word/signed word) 127-(byte/signed byte/word/signed word) 127 +(const byte[]) test_sbytes::msg msg = (string) "0=0@" +(const byte[]) test_sbytes::msg1 msg1 = (string) "0+2=2@" +(const byte[]) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@" +(const byte[]) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@" +(const byte[]) test_sbytes::msg4 msg4 = (string) "-127-127=2@" + +zp ZP_WORD:2 [ assert_sbyte::msg#5 char_cursor#75 char_cursor#65 char_cursor#2 char_cursor#82 char_cursor#1 char_cursor#88 char_cursor#89 print_cls::sc#2 print_cls::sc#1 ] +reg byte x [ assert_sbyte::b#5 ] +zp ZP_BYTE:4 [ assert_sbyte::c#5 assert_byte::c#3 ] +zp ZP_WORD:5 [ print_str::str#10 print_str::str#11 print_str::str#1 print_str::str#5 print_str::str#0 assert_byte::msg#3 ] +zp ZP_WORD:7 [ line_cursor#21 line_cursor#42 line_cursor#45 line_cursor#1 ] +reg byte x [ assert_byte::b#3 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg index dc5219714..0b3facf68 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.cfg @@ -13,13 +13,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) - [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) - [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) + [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] ( main:2 [ ] ) + [11] return [ ] ( main:2 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log index 3a7510840..497361095 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log @@ -17,14 +17,12 @@ proc (void()) main() (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs + (byte) main::i) + *((byte[15]) fibs + (byte~) main::$1) + *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 main::@return: return endproc // main() @@ -36,9 +34,7 @@ SYMBOLS (byte~) main::$0 (byte~) main::$1 (byte~) main::$2 -(byte~) main::$3 -(byte~) main::$4 -(boolean~) main::$5 +(boolean~) main::$3 (label) main::@1 (label) main::@return (byte) main::i @@ -55,14 +51,12 @@ main: scope:[main] from to:main::@1 main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs + (byte) main::i) + *((byte[15]) fibs + (byte~) main::$1) + *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 to:main::@return @@ -86,14 +80,12 @@ main: scope:[main] from to:main::@1 main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs + (byte) main::i) + *((byte[15]) fibs + (byte~) main::$1) + *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -116,14 +108,12 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs *idx (byte) main::i - (byte~) main::$2 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs + (byte) main::i) + *((byte[15]) fibs + (byte~) main::$1) + *((byte[15]) fibs + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$5 ← (byte) main::i < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -151,14 +141,12 @@ main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte~) main::$1) + *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -185,14 +173,12 @@ main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte~) main::$1) + *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -219,9 +205,7 @@ INITIAL SSA SYMBOL TABLE (byte~) main::$0 (byte~) main::$1 (byte~) main::$2 -(byte~) main::$3 -(byte~) main::$4 -(boolean~) main::$5 +(boolean~) main::$3 (label) main::@1 (label) main::@return (byte) main::i @@ -245,14 +229,12 @@ main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte~) main::$1) + *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -280,14 +262,12 @@ main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 main::@1/(byte[15]) fibs#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte~) main::$1) + *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -314,14 +294,12 @@ main::@1: scope:[main] from main main::@1 (byte[15]) fibs#2 ← phi( main/(byte[15]) fibs#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#2 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#2 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#2 + (byte) main::i#2) + *((byte[15]) fibs#2 + (byte~) main::$1) + *((byte[15]) fibs#2 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -346,14 +324,12 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#0 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#0 + (byte) main::i#2) + *((byte[15]) fibs#0 + (byte~) main::$1) + *((byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$5 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 - if((boolean~) main::$5) goto main::@1 + (boolean~) main::$3 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 15 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -363,7 +339,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$5 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 +Simple Condition (boolean~) main::$3 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -377,11 +353,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (byte[15]) fibs#0 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((byte[15]) fibs#0 + (byte) main::i#2) + *((byte[15]) fibs#0 + (byte~) main::$1) + *((byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return @@ -406,11 +380,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 - (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$3 ← (const byte[15]) fibs#0 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 + (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0 + (byte~) main::$1) + *((const byte[15]) fibs#0 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return @@ -422,13 +394,13 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Consolidated assigned array index constant in assignment *(fibs#0+0) -Consolidated assigned array index constant in assignment *(fibs#0+1) +Consolidated array index constant in *(fibs#0+0) +Consolidated array index constant in *(fibs#0+1) Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Consolidated referenced array index constant in assignment main::$3 -Consolidated assigned array index constant in assignment *(fibs#0+2 + main::$0) +Consolidated array index constant in assignment *(fibs#0+1 + main::$1) +Consolidated array index constant in assignment *(fibs#0+2 + main::$0) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -440,11 +412,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 - (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$2 ← (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte~) main::$2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte~) main::$0) ← (byte~) main::$4 + (byte~) main::$1 ← (byte) main::i#2 + (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte~) main::$1) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte~) main::$0) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return @@ -457,7 +427,7 @@ main::@return: scope:[main] from main::@1 @end: scope:[] from @1 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$2 +Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -468,10 +438,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 + (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return @@ -483,12 +451,6 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 @@ -502,10 +464,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) - (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 + (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 to:main::@return @@ -524,9 +484,7 @@ FINAL SYMBOL TABLE (byte[15]) fibs (const byte[15]) fibs#0 = ((byte*))(word/signed word) 4352 (void()) main() -(byte~) main::$1 -(byte~) main::$3 -(byte~) main::$4 +(byte~) main::$2 (label) main::@1 (label) main::@return (byte) main::i @@ -549,10 +507,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) - (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 - (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 - (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 - *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 + (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@3 to:main::@return @@ -569,7 +525,6 @@ Adding NOP phi() at start of @end CALL GRAPH Calls in [] to main:2 -Propagating live ranges... Propagating live ranges... Propagating live ranges... CONTROL FLOW GRAPH - LIVE RANGES FOUND @@ -588,22 +543,20 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] - [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] - [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] - [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@3 [ main::i#1 ] + [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] + [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] + [11] return [ ] to:@return main::@3: scope:[main] from main::@1 - [14] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] + [12] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] to:main::@1 Created 1 initial phi equivalence classes -Coalesced [14] main::i#3 ← main::i#1 +Coalesced [12] main::i#3 ← main::i#1 Coalesced down to 1 phi equivalence classes Culled Empty Block (label) main::@3 Block Sequence Planned @begin @1 @end main main::@1 main::@return @@ -612,7 +565,6 @@ Adding NOP phi() at start of @1 Adding NOP phi() at start of @end Propagating live ranges... Propagating live ranges... -Propagating live ranges... CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @begin: scope:[] from [0] phi() [ ] @@ -629,15 +581,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] - [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] - [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] - [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] + [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] + [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] + [11] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -656,15 +606,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) - [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) - [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) + [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] ( main:2 [ ] ) + [11] return [ ] ( main:2 [ ] ) to:@return DOMINATORS @@ -690,27 +638,19 @@ Loop head: main::@1 tails: main::@1 blocks: main::@1 depth: 1 VARIABLE REGISTER WEIGHTS (byte[15]) fibs (void()) main() -(byte~) main::$1 11.0 -(byte~) main::$3 22.0 -(byte~) main::$4 22.0 +(byte~) main::$2 22.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 11.0 +(byte) main::i#2 18.333333333333332 Initial phi equivalence classes [ main::i#2 main::i#1 ] -Added variable main::$1 to zero page equivalence class [ main::$1 ] -Added variable main::$3 to zero page equivalence class [ main::$3 ] -Added variable main::$4 to zero page equivalence class [ main::$4 ] +Added variable main::$2 to zero page equivalence class [ main::$2 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ main::$1 ] -[ main::$3 ] -[ main::$4 ] +[ main::$2 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_BYTE:3 [ main::$1 ] -Allocated zp ZP_BYTE:4 [ main::$3 ] -Allocated zp ZP_BYTE:5 [ main::$4 ] +Allocated zp ZP_BYTE:3 [ main::$2 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -734,9 +674,7 @@ bend_from_b1: bend: //SEG8 main main: { - .label _1 = 3 - .label _3 = 4 - .label _4 = 5 + .label _2 = 3 .label i = 2 //SEG9 [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 @@ -756,50 +694,45 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz2 lda fibs,x - sta _1 - //SEG17 [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i - lda fibs+1,x - sta _3 - //SEG18 [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) -- vbuz1=vbuz2_plus_vbuz3 - lda _1 clc - adc _3 - sta _4 - //SEG19 [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _4 + adc fibs+1,x + ldx i + sta _2 + //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda _2 ldx i sta fibs+2,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG21 [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG19 [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda i cmp #$f bcc b1_from_b1 jmp breturn - //SEG22 main::@return + //SEG20 main::@return breturn: - //SEG23 [13] return [ ] ( main:2 [ ] ) + //SEG21 [11] return [ ] ( main:2 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:4 [ main::$3 ] has ALU potential. Statement [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ main::$1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$3 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:5 [ main::$4 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , +Statement [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::$2 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 27.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:4 [ main::$3 ] 22: zp ZP_BYTE:5 [ main::$4 ] 11: zp ZP_BYTE:3 [ main::$1 ] +Uplift Scope [main] 34.83: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:3 [ main::$2 ] Uplift Scope [] -Uplifting [main] best 365 combination reg byte x [ main::i#2 main::i#1 ] reg byte alu [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$1 ] +Uplifting [main] best 365 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] Uplifting [] best 365 combination ASSEMBLER BEFORE OPTIMIZATION @@ -842,24 +775,21 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx lda fibs,x - //SEG17 [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) - // [8] main::$3 ← fibs#0+1 *idx main::i#2 // ALU - //SEG18 [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) -- vbuaa=vbuaa_plus_pbuc1_derefidx_vbuxx clc adc fibs+1,x - //SEG19 [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta fibs+2,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG19 [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #$f bcc b1_from_b1 jmp breturn - //SEG22 main::@return + //SEG20 main::@return breturn: - //SEG23 [13] return [ ] ( main:2 [ ] ) + //SEG21 [11] return [ ] ( main:2 [ ] ) rts } @@ -890,19 +820,15 @@ FINAL SYMBOL TABLE (byte[15]) fibs (const byte[15]) fibs#0 fibs = ((byte*))(word/signed word) 4352 (void()) main() -(byte~) main::$1 reg byte a 11.0 -(byte~) main::$3 reg byte alu 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#2 reg byte x 18.333333333333332 reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$1 ] -reg byte alu [ main::$3 ] -reg byte a [ main::$4 ] +reg byte a [ main::$2 ] FINAL CODE //SEG0 Basic Upstart @@ -933,22 +859,19 @@ main: { //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx lda fibs,x - //SEG17 [8] (byte~) main::$3 ← (const byte[15]) fibs#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::i#2 main::$1 main::$3 ] ( main:2 [ main::i#2 main::$1 main::$3 ] ) - // [8] main::$3 ← fibs#0+1 *idx main::i#2 // ALU - //SEG18 [9] (byte~) main::$4 ← (byte~) main::$1 + (byte~) main::$3 [ main::i#2 main::$4 ] ( main:2 [ main::i#2 main::$4 ] ) -- vbuaa=vbuaa_plus_pbuc1_derefidx_vbuxx clc adc fibs+1,x - //SEG19 [10] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$4 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta fibs+2,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [12] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG19 [10] if((byte) main::i#1<(byte/signed byte/word/signed word) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #$f bcc b1 - //SEG22 main::@return - //SEG23 [13] return [ ] ( main:2 [ ] ) + //SEG20 main::@return + //SEG21 [11] return [ ] ( main:2 [ ] ) rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym index f5c7c6d80..a6d60cb23 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.sym @@ -4,16 +4,12 @@ (byte[15]) fibs (const byte[15]) fibs#0 fibs = ((byte*))(word/signed word) 4352 (void()) main() -(byte~) main::$1 reg byte a 11.0 -(byte~) main::$3 reg byte alu 22.0 -(byte~) main::$4 reg byte a 22.0 +(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#2 reg byte x 18.333333333333332 reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$1 ] -reg byte alu [ main::$3 ] -reg byte a [ main::$4 ] +reg byte a [ main::$2 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm index 423dd4bc1..d2234090c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm @@ -61,23 +61,23 @@ flip: { .label r = 4 lda #$10 sta r - ldy #$f - ldx #0 + ldx #$f + ldy #0 b1: lda #$10 sta c b2: - lda buffer1,x - sta buffer2,y - inx - tya + lda buffer1,y + sta buffer2,x + iny + txa clc adc #$10 - tay + tax dec c lda c bne b2 - dey + dex dec r lda r bne b1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg index 41990ea26..fd2025d19 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg @@ -47,63 +47,60 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 [19] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [19] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) - [20] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) - [21] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) - [22] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) - [23] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) - [24] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) + [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) + [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) + [22] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) + [23] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) - [26] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) - [27] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) + [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) + [25] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) + [26] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) to:plot::@return plot::@return: scope:[plot] from plot::@3 - [28] return [ ] ( main:2::plot:14 [ ] ) + [27] return [ ] ( main:2::plot:14 [ ] ) to:@return flip: scope:[flip] from main::@7 - [29] phi() [ ] ( main:2::flip:12 [ ] ) + [28] phi() [ ] ( main:2::flip:12 [ ] ) to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - [30] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [30] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [30] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [29] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [29] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [29] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - [31] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [31] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [31] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [32] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) - [33] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [34] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) - [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) - [36] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) - [37] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) + [30] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [30] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [30] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) + [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) + [34] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) + [35] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) to:flip::@4 flip::@4: scope:[flip] from flip::@2 - [38] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) - [39] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) - [40] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) + [36] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) + [37] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) + [38] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - [41] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) - [42] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:2::flip:12 [ flip::i#2 flip::$4 ] ) - [43] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) - [44] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) - [45] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) + [39] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) + [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) + [41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) + [42] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) to:flip::@return flip::@return: scope:[flip] from flip::@3 - [46] return [ ] ( main:2::flip:12 [ ] ) + [43] return [ ] ( main:2::flip:12 [ ] ) to:@return prepare: scope:[prepare] from main - [47] phi() [ ] ( main:2::prepare:5 [ ] ) + [44] phi() [ ] ( main:2::prepare:5 [ ] ) to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - [48] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) - [49] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) - [50] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) - [51] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) + [45] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) + [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) + [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) + [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 - [52] return [ ] ( main:2::prepare:5 [ ] ) + [49] return [ ] ( main:2::prepare:5 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index 704480f0e..822c66842 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log @@ -95,25 +95,23 @@ proc (void()) flip() flip::@1: (byte) flip::c ← (byte/signed byte/word/signed word) 16 flip::@2: - (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx - *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 + *((byte[256]) buffer2 + (byte) flip::dstIdx) ← *((byte[256]) buffer1 + (byte) flip::srcIdx) (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx ← (byte~) flip::$0 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 (byte) flip::i ← (byte/signed byte/word/signed word) 0 flip::@3: - (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i - *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 + *((byte[256]) buffer1 + (byte) flip::i) ← *((byte[256]) buffer2 + (byte) flip::i) (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 flip::@return: return endproc // flip() @@ -127,17 +125,16 @@ proc (void()) plot() plot::@1: (byte) plot::x ← (byte/signed byte/word/signed word) 0 plot::@2: - (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i - *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 + *((byte*) plot::line + (byte) plot::x) ← *((byte[256]) buffer1 + (byte) plot::i) (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 - (byte*) plot::line ← (byte*~) plot::$5 + (boolean~) plot::$3 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 + (byte*~) plot::$4 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 + (byte*) plot::line ← (byte*~) plot::$4 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 plot::@return: return endproc // plot() @@ -150,11 +147,9 @@ SYMBOLS (byte[256]) buffer2 (void()) flip() (byte~) flip::$0 -(byte~) flip::$1 +(boolean~) flip::$1 (boolean~) flip::$2 (boolean~) flip::$3 -(byte~) flip::$4 -(boolean~) flip::$5 (label) flip::@1 (label) flip::@2 (label) flip::@3 @@ -181,10 +176,9 @@ SYMBOLS (byte/word/signed word~) plot::$0 (byte*~) plot::$1 (byte*~) plot::$2 -(byte~) plot::$3 -(boolean~) plot::$4 -(byte*~) plot::$5 -(boolean~) plot::$6 +(boolean~) plot::$3 +(byte*~) plot::$4 +(boolean~) plot::$5 (label) plot::@1 (label) plot::@2 (label) plot::@return @@ -269,30 +263,28 @@ flip::@1: scope:[flip] from flip flip::@4 (byte) flip::c ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx - *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 + *((byte[256]) buffer2 + (byte) flip::dstIdx) ← *((byte[256]) buffer1 + (byte) flip::srcIdx) (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx ← (byte~) flip::$0 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte) flip::i ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 - (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i - *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 + *((byte[256]) buffer1 + (byte) flip::i) ← *((byte[256]) buffer2 + (byte) flip::i) (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@6 flip::@6: scope:[flip] from flip::@3 to:flip::@return @@ -313,19 +305,18 @@ plot::@1: scope:[plot] from plot plot::@3 (byte) plot::x ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i - *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 + *((byte*) plot::line + (byte) plot::x) ← *((byte[256]) buffer1 + (byte) plot::i) (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 - (byte*) plot::line ← (byte*~) plot::$5 + (byte*~) plot::$4 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 + (byte*) plot::line ← (byte*~) plot::$4 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@4 plot::@4: scope:[plot] from plot::@3 to:plot::@return @@ -405,30 +396,28 @@ flip::@1: scope:[flip] from flip flip::@4 (byte) flip::c ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx - *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 + *((byte[256]) buffer2 + (byte) flip::dstIdx) ← *((byte[256]) buffer1 + (byte) flip::srcIdx) (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx ← (byte~) flip::$0 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte) flip::i ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 - (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i - *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 + *((byte[256]) buffer1 + (byte) flip::i) ← *((byte[256]) buffer2 + (byte) flip::i) (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -445,19 +434,18 @@ plot::@1: scope:[plot] from plot plot::@3 (byte) plot::x ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i - *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 + *((byte*) plot::line + (byte) plot::x) ← *((byte[256]) buffer1 + (byte) plot::i) (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 - (byte*) plot::line ← (byte*~) plot::$5 + (byte*~) plot::$4 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 + (byte*) plot::line ← (byte*~) plot::$4 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -532,30 +520,28 @@ flip::@1: scope:[flip] from flip flip::@4 (byte) flip::c ← (byte/signed byte/word/signed word) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - (byte~) flip::$0 ← (byte[256]) buffer1 *idx (byte) flip::srcIdx - *((byte[256]) buffer2 + (byte) flip::dstIdx) ← (byte~) flip::$0 + *((byte[256]) buffer2 + (byte) flip::dstIdx) ← *((byte[256]) buffer1 + (byte) flip::srcIdx) (byte) flip::srcIdx ← ++ (byte) flip::srcIdx - (byte~) flip::$1 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx ← (byte~) flip::$0 (byte) flip::c ← -- (byte) flip::c - (boolean~) flip::$2 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx ← -- (byte) flip::dstIdx (byte) flip::r ← -- (byte) flip::r - (boolean~) flip::$3 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte) flip::i ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 - (byte~) flip::$4 ← (byte[256]) buffer2 *idx (byte) flip::i - *((byte[256]) buffer1 + (byte) flip::i) ← (byte~) flip::$4 + *((byte[256]) buffer1 + (byte) flip::i) ← *((byte[256]) buffer2 + (byte) flip::i) (byte) flip::i ← ++ (byte) flip::i - (boolean~) flip::$5 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -572,19 +558,18 @@ plot::@1: scope:[plot] from plot plot::@3 (byte) plot::x ← (byte/signed byte/word/signed word) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - (byte~) plot::$3 ← (byte[256]) buffer1 *idx (byte) plot::i - *((byte*) plot::line + (byte) plot::x) ← (byte~) plot::$3 + *((byte*) plot::line + (byte) plot::x) ← *((byte[256]) buffer1 + (byte) plot::i) (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x - (boolean~) plot::$4 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 - (byte*~) plot::$5 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 - (byte*) plot::line ← (byte*~) plot::$5 + (byte*~) plot::$4 ← (byte*) plot::line + (byte/signed byte/word/signed word) 40 + (byte*) plot::line ← (byte*~) plot::$4 (byte) plot::y ← -- (byte) plot::y - (boolean~) plot::$6 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -730,14 +715,13 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte[256]) buffer2#1 ← phi( flip::@1/(byte[256]) buffer2#3 flip::@2/(byte[256]) buffer2#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#2 ← phi( flip::@1/(byte[256]) buffer1#6 flip::@2/(byte[256]) buffer1#2 ) - (byte~) flip::$0 ← (byte[256]) buffer1#2 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#2 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx#1 ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx#1 ← (byte~) flip::$0 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte[256]) buffer2#6 ← phi( flip::@2/(byte[256]) buffer2#1 ) @@ -747,8 +731,8 @@ flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#4 ← phi( flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#4 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte[256]) buffer1#7 ← phi( flip::@4/(byte[256]) buffer1#11 ) @@ -759,11 +743,10 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#7 ) (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte[256]) buffer2#2 ← phi( flip::@3/(byte[256]) buffer2#2 flip::@5/(byte[256]) buffer2#4 ) - (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 - *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#3 + (byte) flip::i#2) ← *((byte[256]) buffer2#2 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -791,23 +774,22 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 (byte*) plot::line#2 ← phi( plot::@1/(byte*) plot::line#4 plot::@2/(byte*) plot::line#2 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#4 ← phi( plot::@1/(byte[256]) buffer1#8 plot::@2/(byte[256]) buffer1#4 ) - (byte~) plot::$3 ← (byte[256]) buffer1#4 *idx (byte) plot::i#2 - *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[256]) buffer1#4 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 (byte) plot::i#4 ← phi( plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#13 ← phi( plot::@2/(byte[256]) buffer1#4 ) (byte) plot::y#2 ← phi( plot::@2/(byte) plot::y#3 ) (byte*) plot::line#3 ← phi( plot::@2/(byte*) plot::line#2 ) - (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 - (byte*) plot::line#1 ← (byte*~) plot::$5 + (byte*~) plot::$4 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 + (byte*) plot::line#1 ← (byte*~) plot::$4 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -946,14 +928,13 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte[256]) buffer2#1 ← phi( flip::@1/(byte[256]) buffer2#3 flip::@2/(byte[256]) buffer2#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#2 ← phi( flip::@1/(byte[256]) buffer1#6 flip::@2/(byte[256]) buffer1#2 ) - (byte~) flip::$0 ← (byte[256]) buffer1#2 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#2 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx#1 ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx#1 ← (byte~) flip::$0 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte[256]) buffer2#6 ← phi( flip::@2/(byte[256]) buffer2#1 ) @@ -963,8 +944,8 @@ flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#4 ← phi( flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#4 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte[256]) buffer1#7 ← phi( flip::@4/(byte[256]) buffer1#11 ) @@ -975,11 +956,10 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#7 ) (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte[256]) buffer2#2 ← phi( flip::@3/(byte[256]) buffer2#2 flip::@5/(byte[256]) buffer2#4 ) - (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 - *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#3 + (byte) flip::i#2) ← *((byte[256]) buffer2#2 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -1007,23 +987,22 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 (byte*) plot::line#2 ← phi( plot::@1/(byte*) plot::line#4 plot::@2/(byte*) plot::line#2 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#4 ← phi( plot::@1/(byte[256]) buffer1#8 plot::@2/(byte[256]) buffer1#4 ) - (byte~) plot::$3 ← (byte[256]) buffer1#4 *idx (byte) plot::i#2 - *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[256]) buffer1#4 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 (byte) plot::i#4 ← phi( plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#13 ← phi( plot::@2/(byte[256]) buffer1#4 ) (byte) plot::y#2 ← phi( plot::@2/(byte) plot::y#3 ) (byte*) plot::line#3 ← phi( plot::@2/(byte*) plot::line#2 ) - (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 - (byte*) plot::line#1 ← (byte*~) plot::$5 + (byte*~) plot::$4 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 + (byte*) plot::line#1 ← (byte*~) plot::$4 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -1117,11 +1096,9 @@ INITIAL SSA SYMBOL TABLE (byte[256]) buffer2#9 (void()) flip() (byte~) flip::$0 -(byte~) flip::$1 +(boolean~) flip::$1 (boolean~) flip::$2 (boolean~) flip::$3 -(byte~) flip::$4 -(boolean~) flip::$5 (label) flip::@1 (label) flip::@2 (label) flip::@3 @@ -1180,10 +1157,9 @@ INITIAL SSA SYMBOL TABLE (byte/word/signed word~) plot::$0 (byte*~) plot::$1 (byte*~) plot::$2 -(byte~) plot::$3 -(boolean~) plot::$4 -(byte*~) plot::$5 -(boolean~) plot::$6 +(boolean~) plot::$3 +(byte*~) plot::$4 +(boolean~) plot::$5 (label) plot::@1 (label) plot::@2 (label) plot::@3 @@ -1344,14 +1320,13 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte[256]) buffer2#1 ← phi( flip::@1/(byte[256]) buffer2#3 flip::@2/(byte[256]) buffer2#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#2 ← phi( flip::@1/(byte[256]) buffer1#6 flip::@2/(byte[256]) buffer1#2 ) - (byte~) flip::$0 ← (byte[256]) buffer1#2 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#2 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 - (byte~) flip::$1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 - (byte) flip::dstIdx#1 ← (byte~) flip::$1 + (byte~) flip::$0 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 + (byte) flip::dstIdx#1 ← (byte~) flip::$0 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte[256]) buffer2#6 ← phi( flip::@2/(byte[256]) buffer2#1 ) @@ -1361,8 +1336,8 @@ flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#4 ← phi( flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#4 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte[256]) buffer1#7 ← phi( flip::@4/(byte[256]) buffer1#11 ) @@ -1373,11 +1348,10 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#7 ) (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte[256]) buffer2#2 ← phi( flip::@3/(byte[256]) buffer2#2 flip::@5/(byte[256]) buffer2#4 ) - (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 - *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#3 + (byte) flip::i#2) ← *((byte[256]) buffer2#2 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -1405,23 +1379,22 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 (byte*) plot::line#2 ← phi( plot::@1/(byte*) plot::line#4 plot::@2/(byte*) plot::line#2 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#4 ← phi( plot::@1/(byte[256]) buffer1#8 plot::@2/(byte[256]) buffer1#4 ) - (byte~) plot::$3 ← (byte[256]) buffer1#4 *idx (byte) plot::i#2 - *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[256]) buffer1#4 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 (byte) plot::i#4 ← phi( plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#13 ← phi( plot::@2/(byte[256]) buffer1#4 ) (byte) plot::y#2 ← phi( plot::@2/(byte) plot::y#3 ) (byte*) plot::line#3 ← phi( plot::@2/(byte*) plot::line#2 ) - (byte*~) plot::$5 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 - (byte*) plot::line#1 ← (byte*~) plot::$5 + (byte*~) plot::$4 ← (byte*) plot::line#3 + (byte/signed byte/word/signed word) 40 + (byte*) plot::line#1 ← (byte*~) plot::$4 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -1456,7 +1429,7 @@ Alias (byte[1000]) SCREEN#2 = (byte[1000]) SCREEN#8 (byte[1000]) SCREEN#4 (byte[ Alias (byte[256]) buffer1#15 = (byte[256]) buffer1#21 (byte[256]) buffer1#17 (byte[256]) buffer1#18 (byte[256]) buffer1#16 (byte[256]) buffer1#22 Alias (byte[256]) buffer2#12 = (byte[256]) buffer2#8 (byte[256]) buffer2#9 (byte[256]) buffer2#7 (byte[256]) buffer2#16 (byte[256]) buffer2#13 Alias (byte) main::c#2 = (byte) main::c#3 -Alias (byte) flip::dstIdx#1 = (byte~) flip::$1 (byte) flip::dstIdx#4 +Alias (byte) flip::dstIdx#1 = (byte~) flip::$0 (byte) flip::dstIdx#4 Alias (byte) flip::r#2 = (byte) flip::r#3 Alias (byte[256]) buffer1#11 = (byte[256]) buffer1#2 (byte[256]) buffer1#7 Alias (byte) flip::srcIdx#1 = (byte) flip::srcIdx#4 @@ -1466,7 +1439,7 @@ Alias (byte*) plot::line#2 = (byte*) plot::line#3 Alias (byte) plot::y#2 = (byte) plot::y#3 Alias (byte[256]) buffer1#13 = (byte[256]) buffer1#4 Alias (byte) plot::i#1 = (byte) plot::i#4 -Alias (byte*) plot::line#1 = (byte*~) plot::$5 +Alias (byte*) plot::line#1 = (byte*~) plot::$4 Alias (byte[256]) buffer1#0 = (byte[256]) buffer1#14 Alias (byte*) RASTER#0 = (byte*) RASTER#10 Alias (byte[1000]) SCREEN#0 = (byte[1000]) SCREEN#12 @@ -1569,19 +1542,18 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte[256]) buffer2#1 ← phi( flip::@1/(byte[256]) buffer2#3 flip::@2/(byte[256]) buffer2#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#11 ← phi( flip::@1/(byte[256]) buffer1#6 flip::@2/(byte[256]) buffer1#11 ) - (byte~) flip::$0 ← (byte[256]) buffer1#11 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#11 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 @@ -1590,11 +1562,10 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@3/(byte[256]) buffer1#3 flip::@5/(byte[256]) buffer1#11 ) (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte[256]) buffer2#2 ← phi( flip::@3/(byte[256]) buffer2#2 flip::@5/(byte[256]) buffer2#1 ) - (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 - *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#3 + (byte) flip::i#2) ← *((byte[256]) buffer2#2 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -1621,18 +1592,17 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 (byte*) plot::line#2 ← phi( plot::@1/(byte*) plot::line#4 plot::@2/(byte*) plot::line#2 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#13 ← phi( plot::@1/(byte[256]) buffer1#8 plot::@2/(byte[256]) buffer1#13 ) - (byte~) plot::$3 ← (byte[256]) buffer1#13 *idx (byte) plot::i#2 - *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[256]) buffer1#13 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 (byte*) plot::line#1 ← (byte*) plot::line#2 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -1770,19 +1740,18 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte[256]) buffer2#1 ← phi( flip::@1/(byte[256]) buffer2#3 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) (byte[256]) buffer1#11 ← phi( flip::@1/(byte[256]) buffer1#6 ) - (byte~) flip::$0 ← (byte[256]) buffer1#11 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#1 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#11 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#2 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 @@ -1791,11 +1760,10 @@ flip::@3: scope:[flip] from flip::@3 flip::@5 (byte[256]) buffer1#3 ← phi( flip::@5/(byte[256]) buffer1#11 ) (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) (byte[256]) buffer2#2 ← phi( flip::@5/(byte[256]) buffer2#1 ) - (byte~) flip::$4 ← (byte[256]) buffer2#2 *idx (byte) flip::i#2 - *((byte[256]) buffer1#3 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#3 + (byte) flip::i#2) ← *((byte[256]) buffer2#2 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -1822,18 +1790,17 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 (byte*) plot::line#2 ← phi( plot::@1/(byte*) plot::line#4 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) (byte[256]) buffer1#13 ← phi( plot::@1/(byte[256]) buffer1#8 ) - (byte~) plot::$3 ← (byte[256]) buffer1#13 *idx (byte) plot::i#2 - *((byte*) plot::line#2 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[256]) buffer1#13 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 (byte*) plot::line#1 ← (byte*) plot::line#2 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#2 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -1948,30 +1915,28 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#6 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 - (boolean~) flip::$2 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$2) goto flip::@2 + (boolean~) flip::$1 ← (byte) flip::c#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$1) goto flip::@2 to:flip::@4 flip::@4: scope:[flip] from flip::@2 (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 (byte) flip::r#1 ← -- (byte) flip::r#4 - (boolean~) flip::$3 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$3) goto flip::@1 + (boolean~) flip::$2 ← (byte) flip::r#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$2) goto flip::@1 to:flip::@5 flip::@5: scope:[flip] from flip::@4 (byte) flip::i#0 ← (byte/signed byte/word/signed word) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 - *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#6 + (byte) flip::i#2) ← *((byte[256]) buffer2#3 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 - (boolean~) flip::$5 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) flip::$5) goto flip::@3 + (boolean~) flip::$3 ← (byte) flip::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) flip::$3) goto flip::@3 to:flip::@return flip::@return: scope:[flip] from flip::@3 return @@ -1993,18 +1958,17 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#8 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#8 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 - (boolean~) plot::$4 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 - if((boolean~) plot::$4) goto plot::@2 + (boolean~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word) 16 + if((boolean~) plot::$3) goto plot::@2 to:plot::@3 plot::@3: scope:[plot] from plot::@2 (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 (byte) plot::y#1 ← -- (byte) plot::y#4 - (boolean~) plot::$6 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) plot::$6) goto plot::@1 + (boolean~) plot::$5 ← (byte) plot::y#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) plot::$5) goto plot::@1 to:plot::@return plot::@return: scope:[plot] from plot::@3 return @@ -2018,11 +1982,11 @@ Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#1)!=(byte/word/signed w Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@4 Simple Condition (boolean~) main::$3 if((byte) main::c#1!=(byte/signed byte/word/signed word) 0) goto main::@2 Simple Condition (boolean~) prepare::$0 if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 -Simple Condition (boolean~) flip::$2 if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 -Simple Condition (boolean~) flip::$3 if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 -Simple Condition (boolean~) flip::$5 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 -Simple Condition (boolean~) plot::$4 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 -Simple Condition (boolean~) plot::$6 if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 +Simple Condition (boolean~) flip::$1 if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 +Simple Condition (boolean~) flip::$2 if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 +Simple Condition (boolean~) flip::$3 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 +Simple Condition (boolean~) plot::$3 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 +Simple Condition (boolean~) plot::$5 if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -2101,8 +2065,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#6 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2118,8 +2081,7 @@ flip::@5: scope:[flip] from flip::@4 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 - *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#6 + (byte) flip::i#2) ← *((byte[256]) buffer2#3 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2143,8 +2105,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#8 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#8 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2245,8 +2206,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#6 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2261,8 +2221,7 @@ flip::@5: scope:[flip] from flip::@4 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 - *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#6 + (byte) flip::i#2) ← *((byte[256]) buffer2#3 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2282,8 +2241,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#8 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#8 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2372,8 +2330,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#6 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2388,8 +2345,7 @@ flip::@5: scope:[flip] from flip::@4 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 - *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#6 + (byte) flip::i#2) ← *((byte[256]) buffer2#3 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2409,8 +2365,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#8 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#8 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2496,8 +2451,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#6 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2510,8 +2464,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 - *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#6 + (byte) flip::i#2) ← *((byte[256]) buffer2#3 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2531,8 +2484,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#8 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#8 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2625,8 +2577,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#6 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#3 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#6 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2639,8 +2590,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#3 *idx (byte) flip::i#2 - *((byte[256]) buffer1#6 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#6 + (byte) flip::i#2) ← *((byte[256]) buffer2#3 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2660,8 +2610,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#8 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#8 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2744,8 +2693,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#20 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#11 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#11 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#20 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2758,8 +2706,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#11 *idx (byte) flip::i#2 - *((byte[256]) buffer1#20 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#20 + (byte) flip::i#2) ← *((byte[256]) buffer2#11 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2778,8 +2725,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#20 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#20 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2865,8 +2811,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (byte[256]) buffer1#20 *idx (byte) flip::srcIdx#2 - *((byte[256]) buffer2#11 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((byte[256]) buffer2#11 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#20 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2879,8 +2824,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (byte[256]) buffer2#11 *idx (byte) flip::i#2 - *((byte[256]) buffer1#20 + (byte) flip::i#2) ← (byte~) flip::$4 + *((byte[256]) buffer1#20 + (byte) flip::i#2) ← *((byte[256]) buffer2#11 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -2899,8 +2843,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (byte[256]) buffer1#20 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((byte[256]) buffer1#20 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -2976,8 +2919,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 - *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -2990,8 +2932,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 - *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 + *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -3010,8 +2951,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -3084,8 +3024,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 - *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -3098,8 +3037,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 - *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 + *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -3117,8 +3055,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -3191,8 +3128,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 - *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -3205,8 +3141,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 - *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 + *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -3223,8 +3158,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -3243,10 +3177,6 @@ plot::@return: scope:[plot] from plot::@3 @end: scope:[] from @4 Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::srcIdx#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::i#2 Culled Empty Block (label) main::@1 Succesful SSA optimization Pass2CullEmptyBlocks CONTROL FLOW GRAPH @@ -3300,8 +3230,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(const byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 - *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -3314,8 +3243,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(const byte) flip::i#0 ) - (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 - *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 + *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -3332,8 +3260,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(const byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -3352,15 +3279,7 @@ plot::@return: scope:[plot] from plot::@3 @end: scope:[] from @4 Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::srcIdx#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::srcIdx#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) flip::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) plot::i#2 Inlining constant with var siblings (const byte) main::c#0 Inlining constant with var siblings (const byte) main::c#0 Inlining constant with var siblings (const byte) prepare::i#0 @@ -3452,8 +3371,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 - *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -3466,8 +3384,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) - (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 - *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 + *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 to:flip::@return @@ -3484,8 +3401,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 @@ -3516,8 +3432,6 @@ FINAL SYMBOL TABLE (byte[256]) buffer2 (const byte[256]) buffer2#0 = ((byte*))(word/signed word) 4352 (void()) flip() -(byte~) flip::$0 -(byte~) flip::$4 (label) flip::@1 (label) flip::@2 (label) flip::@3 @@ -3553,7 +3467,6 @@ FINAL SYMBOL TABLE (byte) main::c#1 (byte) main::c#4 (void()) plot() -(byte~) plot::$3 (label) plot::@1 (label) plot::@2 (label) plot::@3 @@ -3634,8 +3547,7 @@ plot::@1: scope:[plot] from plot plot::@5 plot::@2: scope:[plot] from plot::@1 plot::@6 (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@6/(byte~) plot::x#3 ) (byte) plot::i#2 ← phi( plot::@1/(byte~) plot::i#6 plot::@6/(byte~) plot::i#7 ) - (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 - *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 + *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@6 @@ -3670,8 +3582,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@8 (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@8/(byte~) flip::c#3 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte~) flip::dstIdx#7 flip::@8/(byte~) flip::dstIdx#8 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte~) flip::srcIdx#6 flip::@8/(byte~) flip::srcIdx#7 ) - (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 - *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 + *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 (byte) flip::c#1 ← -- (byte) flip::c#2 @@ -3684,8 +3595,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@4 flip::@9 (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte/signed byte/word/signed word) 0 ) - (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 - *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 + *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← ++ (byte) flip::i#2 if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@9 to:flip::@return @@ -3744,7 +3654,6 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... CONTROL FLOW GRAPH - LIVE RANGES FOUND @begin: scope:[] from [0] phi() [ ] @@ -3799,112 +3708,109 @@ plot::@1: scope:[plot] from plot plot::@5 plot::@2: scope:[plot] from plot::@1 plot::@6 [21] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@6/(byte~) plot::x#3 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [21] (byte) plot::i#2 ← phi( plot::@1/(byte~) plot::i#6 plot::@6/(byte~) plot::i#7 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] - [22] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] - [23] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] - [24] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::x#2 plot::i#1 ] - [25] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] - [26] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@6 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] + [22] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] + [23] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::x#2 plot::i#1 ] + [24] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] + [25] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@6 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [27] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] - [28] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] - [29] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@5 [ plot::i#1 plot::line#1 plot::y#1 ] + [26] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] + [27] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] + [28] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@5 [ plot::i#1 plot::line#1 plot::y#1 ] to:plot::@return plot::@return: scope:[plot] from plot::@3 - [30] return [ ] + [29] return [ ] to:@return plot::@5: scope:[plot] from plot::@3 - [31] (byte~) plot::i#5 ← (byte) plot::i#1 [ plot::i#5 plot::line#1 plot::y#1 ] - [32] (byte*~) plot::line#5 ← (byte*) plot::line#1 [ plot::i#5 plot::line#5 plot::y#1 ] - [33] (byte~) plot::y#5 ← (byte) plot::y#1 [ plot::i#5 plot::line#5 plot::y#5 ] + [30] (byte~) plot::i#5 ← (byte) plot::i#1 [ plot::i#5 plot::line#1 plot::y#1 ] + [31] (byte*~) plot::line#5 ← (byte*) plot::line#1 [ plot::i#5 plot::line#5 plot::y#1 ] + [32] (byte~) plot::y#5 ← (byte) plot::y#1 [ plot::i#5 plot::line#5 plot::y#5 ] to:plot::@1 plot::@6: scope:[plot] from plot::@2 - [34] (byte~) plot::i#7 ← (byte) plot::i#1 [ plot::line#4 plot::y#4 plot::i#7 plot::x#1 ] - [35] (byte~) plot::x#3 ← (byte) plot::x#1 [ plot::line#4 plot::y#4 plot::i#7 plot::x#3 ] + [33] (byte~) plot::i#7 ← (byte) plot::i#1 [ plot::line#4 plot::y#4 plot::i#7 plot::x#1 ] + [34] (byte~) plot::x#3 ← (byte) plot::x#1 [ plot::line#4 plot::y#4 plot::i#7 plot::x#3 ] to:plot::@2 flip: scope:[flip] from main::@7 - [36] phi() [ ] + [35] phi() [ ] to:flip::@1 flip::@1: scope:[flip] from flip flip::@7 - [37] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@7/(byte~) flip::r#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [37] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@7/(byte~) flip::dstIdx#6 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [37] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@7/(byte~) flip::srcIdx#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [38] (byte~) flip::srcIdx#6 ← (byte) flip::srcIdx#3 [ flip::dstIdx#5 flip::r#4 flip::srcIdx#6 ] - [39] (byte~) flip::dstIdx#7 ← (byte) flip::dstIdx#5 [ flip::r#4 flip::srcIdx#6 flip::dstIdx#7 ] + [36] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@7/(byte~) flip::r#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [36] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@7/(byte~) flip::dstIdx#6 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [36] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@7/(byte~) flip::srcIdx#5 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [37] (byte~) flip::srcIdx#6 ← (byte) flip::srcIdx#3 [ flip::dstIdx#5 flip::r#4 flip::srcIdx#6 ] + [38] (byte~) flip::dstIdx#7 ← (byte) flip::dstIdx#5 [ flip::r#4 flip::srcIdx#6 flip::dstIdx#7 ] to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@8 - [40] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@8/(byte~) flip::c#3 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [40] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte~) flip::dstIdx#7 flip::@8/(byte~) flip::dstIdx#8 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [40] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte~) flip::srcIdx#6 flip::@8/(byte~) flip::srcIdx#7 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [41] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] - [42] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [43] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::dstIdx#3 flip::c#2 flip::srcIdx#1 ] - [44] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::c#2 flip::srcIdx#1 flip::dstIdx#1 ] - [45] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] - [46] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] + [39] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@8/(byte~) flip::c#3 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [39] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte~) flip::dstIdx#7 flip::@8/(byte~) flip::dstIdx#8 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [39] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte~) flip::srcIdx#6 flip::@8/(byte~) flip::srcIdx#7 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [40] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [41] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::dstIdx#3 flip::c#2 flip::srcIdx#1 ] + [42] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::c#2 flip::srcIdx#1 flip::dstIdx#1 ] + [43] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] + [44] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] to:flip::@4 flip::@4: scope:[flip] from flip::@2 - [47] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] - [48] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] - [49] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@7 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] + [45] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] + [46] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] + [47] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@7 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] to:flip::@3 flip::@3: scope:[flip] from flip::@4 flip::@9 - [50] (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] - [51] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] - [52] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] - [53] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] - [54] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@9 [ flip::i#1 ] + [48] (byte) flip::i#2 ← phi( flip::@9/(byte~) flip::i#3 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] + [49] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] + [50] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] + [51] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@9 [ flip::i#1 ] to:flip::@return flip::@return: scope:[flip] from flip::@3 - [55] return [ ] + [52] return [ ] to:@return flip::@9: scope:[flip] from flip::@3 - [56] (byte~) flip::i#3 ← (byte) flip::i#1 [ flip::i#3 ] + [53] (byte~) flip::i#3 ← (byte) flip::i#1 [ flip::i#3 ] to:flip::@3 flip::@7: scope:[flip] from flip::@4 - [57] (byte~) flip::srcIdx#5 ← (byte) flip::srcIdx#1 [ flip::srcIdx#5 flip::dstIdx#2 flip::r#1 ] - [58] (byte~) flip::dstIdx#6 ← (byte) flip::dstIdx#2 [ flip::srcIdx#5 flip::dstIdx#6 flip::r#1 ] - [59] (byte~) flip::r#5 ← (byte) flip::r#1 [ flip::srcIdx#5 flip::dstIdx#6 flip::r#5 ] + [54] (byte~) flip::srcIdx#5 ← (byte) flip::srcIdx#1 [ flip::srcIdx#5 flip::dstIdx#2 flip::r#1 ] + [55] (byte~) flip::dstIdx#6 ← (byte) flip::dstIdx#2 [ flip::srcIdx#5 flip::dstIdx#6 flip::r#1 ] + [56] (byte~) flip::r#5 ← (byte) flip::r#1 [ flip::srcIdx#5 flip::dstIdx#6 flip::r#5 ] to:flip::@1 flip::@8: scope:[flip] from flip::@2 - [60] (byte~) flip::srcIdx#7 ← (byte) flip::srcIdx#1 [ flip::r#4 flip::srcIdx#7 flip::dstIdx#1 flip::c#1 ] - [61] (byte~) flip::dstIdx#8 ← (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#7 flip::dstIdx#8 flip::c#1 ] - [62] (byte~) flip::c#3 ← (byte) flip::c#1 [ flip::r#4 flip::srcIdx#7 flip::dstIdx#8 flip::c#3 ] + [57] (byte~) flip::srcIdx#7 ← (byte) flip::srcIdx#1 [ flip::r#4 flip::srcIdx#7 flip::dstIdx#1 flip::c#1 ] + [58] (byte~) flip::dstIdx#8 ← (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#7 flip::dstIdx#8 flip::c#1 ] + [59] (byte~) flip::c#3 ← (byte) flip::c#1 [ flip::r#4 flip::srcIdx#7 flip::dstIdx#8 flip::c#3 ] to:flip::@2 prepare: scope:[prepare] from main - [63] phi() [ ] + [60] phi() [ ] to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@3 - [64] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@3/(byte~) prepare::i#3 ) [ prepare::i#2 ] - [65] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] - [66] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] - [67] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@3 [ prepare::i#1 ] + [61] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@3/(byte~) prepare::i#3 ) [ prepare::i#2 ] + [62] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] + [63] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] + [64] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@3 [ prepare::i#1 ] to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 - [68] return [ ] + [65] return [ ] to:@return prepare::@3: scope:[prepare] from prepare::@1 - [69] (byte~) prepare::i#3 ← (byte) prepare::i#1 [ prepare::i#3 ] + [66] (byte~) prepare::i#3 ← (byte) prepare::i#1 [ prepare::i#3 ] to:prepare::@1 Created 14 initial phi equivalence classes Coalesced [17] main::c#6 ← main::c#1 Coalesced [20] plot::i#6 ← plot::i#3 -Coalesced [31] plot::i#5 ← plot::i#1 -Coalesced [32] plot::line#5 ← plot::line#1 -Coalesced [33] plot::y#5 ← plot::y#1 -Coalesced (already) [34] plot::i#7 ← plot::i#1 -Coalesced [35] plot::x#3 ← plot::x#1 -Coalesced [38] flip::srcIdx#6 ← flip::srcIdx#3 -Coalesced [39] flip::dstIdx#7 ← flip::dstIdx#5 -Coalesced [56] flip::i#3 ← flip::i#1 -Coalesced [57] flip::srcIdx#5 ← flip::srcIdx#1 -Coalesced [58] flip::dstIdx#6 ← flip::dstIdx#2 -Coalesced [59] flip::r#5 ← flip::r#1 -Coalesced (already) [60] flip::srcIdx#7 ← flip::srcIdx#1 -Coalesced [61] flip::dstIdx#8 ← flip::dstIdx#1 -Coalesced [62] flip::c#3 ← flip::c#1 -Coalesced [69] prepare::i#3 ← prepare::i#1 +Coalesced [30] plot::i#5 ← plot::i#1 +Coalesced [31] plot::line#5 ← plot::line#1 +Coalesced [32] plot::y#5 ← plot::y#1 +Coalesced (already) [33] plot::i#7 ← plot::i#1 +Coalesced [34] plot::x#3 ← plot::x#1 +Coalesced [37] flip::srcIdx#6 ← flip::srcIdx#3 +Coalesced [38] flip::dstIdx#7 ← flip::dstIdx#5 +Coalesced [53] flip::i#3 ← flip::i#1 +Coalesced [54] flip::srcIdx#5 ← flip::srcIdx#1 +Coalesced [55] flip::dstIdx#6 ← flip::dstIdx#2 +Coalesced [56] flip::r#5 ← flip::r#1 +Coalesced (already) [57] flip::srcIdx#7 ← flip::srcIdx#1 +Coalesced [58] flip::dstIdx#8 ← flip::dstIdx#1 +Coalesced [59] flip::c#3 ← flip::c#1 +Coalesced [66] prepare::i#3 ← prepare::i#1 Coalesced down to 11 phi equivalence classes Culled Empty Block (label) main::@12 Culled Empty Block (label) plot::@5 @@ -3932,7 +3838,6 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @begin: scope:[] from [0] phi() [ ] @@ -3983,65 +3888,62 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 [19] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] [19] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] - [20] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] - [21] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] - [22] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] - [23] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] - [24] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] + [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] + [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] + [22] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] + [23] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] - [26] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] - [27] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] + [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] + [25] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] + [26] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] to:plot::@return plot::@return: scope:[plot] from plot::@3 - [28] return [ ] + [27] return [ ] to:@return flip: scope:[flip] from main::@7 - [29] phi() [ ] + [28] phi() [ ] to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - [30] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [30] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] - [30] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [29] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [29] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] + [29] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - [31] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [31] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [31] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [32] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] - [33] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] - [34] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] - [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] - [36] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] - [37] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] + [30] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [30] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [30] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] + [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] + [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] + [34] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] + [35] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] to:flip::@4 flip::@4: scope:[flip] from flip::@2 - [38] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] - [39] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] - [40] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] + [36] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] + [37] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] + [38] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - [41] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] - [42] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] - [43] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] - [44] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] - [45] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] + [39] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] + [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] + [41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] + [42] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] to:flip::@return flip::@return: scope:[flip] from flip::@3 - [46] return [ ] + [43] return [ ] to:@return prepare: scope:[prepare] from main - [47] phi() [ ] + [44] phi() [ ] to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - [48] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] - [49] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] - [50] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] - [51] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] + [45] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] + [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] + [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] + [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 - [52] return [ ] + [49] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -4094,65 +3996,62 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 [19] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [19] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) - [20] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) - [21] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) - [22] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) - [23] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) - [24] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) + [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) + [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) + [22] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) + [23] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) to:plot::@3 plot::@3: scope:[plot] from plot::@2 - [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) - [26] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) - [27] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) + [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) + [25] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) + [26] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) to:plot::@return plot::@return: scope:[plot] from plot::@3 - [28] return [ ] ( main:2::plot:14 [ ] ) + [27] return [ ] ( main:2::plot:14 [ ] ) to:@return flip: scope:[flip] from main::@7 - [29] phi() [ ] ( main:2::flip:12 [ ] ) + [28] phi() [ ] ( main:2::flip:12 [ ] ) to:flip::@1 flip::@1: scope:[flip] from flip flip::@4 - [30] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [30] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) - [30] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [29] (byte) flip::r#4 ← phi( flip/(byte/signed byte/word/signed word) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [29] (byte) flip::dstIdx#5 ← phi( flip/(byte/signed byte/word/signed word) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) + [29] (byte) flip::srcIdx#3 ← phi( flip/(byte/signed byte/word/signed word) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:2::flip:12 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ) to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - [31] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [31] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [31] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [32] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) - [33] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [34] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) - [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) - [36] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) - [37] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) + [30] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [30] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [30] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) + [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) + [34] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) + [35] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) to:flip::@4 flip::@4: scope:[flip] from flip::@2 - [38] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) - [39] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) - [40] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) + [36] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) + [37] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) + [38] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 - [41] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) - [42] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:2::flip:12 [ flip::i#2 flip::$4 ] ) - [43] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) - [44] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) - [45] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) + [39] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word) 0 ) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) + [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) + [41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) + [42] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) to:flip::@return flip::@return: scope:[flip] from flip::@3 - [46] return [ ] ( main:2::flip:12 [ ] ) + [43] return [ ] ( main:2::flip:12 [ ] ) to:@return prepare: scope:[prepare] from main - [47] phi() [ ] ( main:2::prepare:5 [ ] ) + [44] phi() [ ] ( main:2::prepare:5 [ ] ) to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - [48] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) - [49] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) - [50] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) - [51] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) + [45] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) + [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) + [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) + [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) to:prepare::@return prepare::@return: scope:[prepare] from prepare::@1 - [52] return [ ] ( main:2::prepare:5 [ ] ) + [49] return [ ] ( main:2::prepare:5 [ ] ) to:@return DOMINATORS @@ -4248,45 +4147,42 @@ VARIABLE REGISTER WEIGHTS (byte[256]) buffer1 (byte[256]) buffer2 (void()) flip() -(byte~) flip::$0 2002.0 -(byte~) flip::$4 202.0 (byte) flip::c (byte) flip::c#1 1501.5 -(byte) flip::c#2 400.4 +(byte) flip::c#2 500.5 (byte) flip::dstIdx (byte) flip::dstIdx#1 701.0 (byte) flip::dstIdx#2 67.33333333333333 -(byte) flip::dstIdx#3 776.0 +(byte) flip::dstIdx#3 1034.6666666666667 (byte) flip::dstIdx#5 202.0 (byte) flip::i (byte) flip::i#1 151.5 -(byte) flip::i#2 134.66666666666666 +(byte) flip::i#2 202.0 (byte) flip::r (byte) flip::r#1 151.5 -(byte) flip::r#4 22.444444444444443 +(byte) flip::r#4 25.25 (byte) flip::srcIdx (byte) flip::srcIdx#1 300.42857142857144 -(byte) flip::srcIdx#2 1034.6666666666667 +(byte) flip::srcIdx#2 1552.0 (byte) flip::srcIdx#3 202.0 (void()) main() (byte) main::c (byte) main::c#1 151.5 (byte) main::c#4 67.33333333333333 (void()) plot() -(byte~) plot::$3 2002.0 (byte) plot::i (byte) plot::i#1 350.5 -(byte) plot::i#2 1034.6666666666667 +(byte) plot::i#2 1552.0 (byte) plot::i#3 202.0 (byte*) plot::line (byte*) plot::line#1 67.33333333333333 -(byte*) plot::line#4 171.85714285714283 +(byte*) plot::line#4 200.50000000000003 (byte) plot::x (byte) plot::x#1 1501.5 -(byte) plot::x#2 750.75 +(byte) plot::x#2 1001.0 (byte) plot::y (byte) plot::y#1 151.5 -(byte) plot::y#4 25.25 +(byte) plot::y#4 28.857142857142858 (void()) prepare() (byte) prepare::i (byte) prepare::i#1 16.5 @@ -4304,9 +4200,6 @@ Initial phi equivalence classes [ flip::c#2 flip::c#1 ] [ flip::i#2 flip::i#1 ] [ prepare::i#2 prepare::i#1 ] -Added variable plot::$3 to zero page equivalence class [ plot::$3 ] -Added variable flip::$0 to zero page equivalence class [ flip::$0 ] -Added variable flip::$4 to zero page equivalence class [ flip::$4 ] Complete equivalence classes [ main::c#4 main::c#1 ] [ plot::line#4 plot::line#1 ] @@ -4319,9 +4212,6 @@ Complete equivalence classes [ flip::c#2 flip::c#1 ] [ flip::i#2 flip::i#1 ] [ prepare::i#2 prepare::i#1 ] -[ plot::$3 ] -[ flip::$0 ] -[ flip::$4 ] Allocated zp ZP_BYTE:2 [ main::c#4 main::c#1 ] Allocated zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] Allocated zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] @@ -4333,9 +4223,6 @@ Allocated zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dst Allocated zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] Allocated zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] Allocated zp ZP_BYTE:13 [ prepare::i#2 prepare::i#1 ] -Allocated zp ZP_BYTE:14 [ plot::$3 ] -Allocated zp ZP_BYTE:15 [ flip::$0 ] -Allocated zp ZP_BYTE:16 [ flip::$4 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -4366,7 +4253,7 @@ bend: main: { .label c = 2 //SEG10 [5] call prepare param-assignment [ ] ( main:2 [ ] ) - //SEG11 [47] phi from main to prepare [phi:main->prepare] + //SEG11 [44] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare //SEG12 [6] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] @@ -4410,7 +4297,7 @@ main: { //SEG25 main::@7 b7: //SEG26 [12] call flip param-assignment [ ] ( main:2 [ ] ) - //SEG27 [29] phi from main::@7 to flip [phi:main::@7->flip] + //SEG27 [28] phi from main::@7 to flip [phi:main::@7->flip] flip_from_b7: jsr flip //SEG28 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] @@ -4435,7 +4322,6 @@ main: { } //SEG36 plot plot: { - .label _3 = $e .label i = 6 .label x = 7 .label line = 3 @@ -4476,26 +4362,23 @@ plot: { jmp b2 //SEG52 plot::@2 b2: - //SEG53 [20] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG53 [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 ldx i lda buffer1,x - sta _3 - //SEG54 [21] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuz3 - lda _3 ldy x sta (line),y - //SEG55 [22] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG54 [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG56 [23] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG55 [22] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG57 [24] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG56 [23] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda x cmp #$10 bcc b2_from_b2 jmp b3 - //SEG58 plot::@3 + //SEG57 plot::@3 b3: - //SEG59 [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG58 [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -4503,151 +4386,142 @@ plot: { bcc !+ inc line+1 !: - //SEG60 [26] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG59 [25] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1=_dec_vbuz1 dec y - //SEG61 [27] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG60 [26] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1_neq_0_then_la1 lda y bne b1_from_b3 jmp breturn - //SEG62 plot::@return + //SEG61 plot::@return breturn: - //SEG63 [28] return [ ] ( main:2::plot:14 [ ] ) + //SEG62 [27] return [ ] ( main:2::plot:14 [ ] ) rts } -//SEG64 flip +//SEG63 flip flip: { - .label _0 = $f - .label _4 = $10 .label srcIdx = 9 .label dstIdx = $a .label c = $b .label r = 8 .label i = $c - //SEG65 [30] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG64 [29] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG66 [30] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 + //SEG65 [29] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 sta r - //SEG67 [30] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- vbuz1=vbuc1 + //SEG66 [29] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- vbuz1=vbuc1 lda #$f sta dstIdx - //SEG68 [30] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- vbuz1=vbuc1 + //SEG67 [29] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- vbuz1=vbuc1 lda #0 sta srcIdx jmp b1 - //SEG69 [30] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG68 [29] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] b1_from_b4: - //SEG70 [30] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy - //SEG71 [30] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy - //SEG72 [30] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy + //SEG69 [29] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG70 [29] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG71 [29] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy jmp b1 - //SEG73 flip::@1 + //SEG72 flip::@1 b1: - //SEG74 [31] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG73 [30] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG75 [31] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 + //SEG74 [30] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 lda #$10 sta c - //SEG76 [31] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy - //SEG77 [31] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG75 [30] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG76 [30] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG78 [31] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG77 [30] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] b2_from_b2: - //SEG79 [31] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy - //SEG80 [31] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy - //SEG81 [31] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy + //SEG78 [30] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG79 [30] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG80 [30] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy jmp b2 - //SEG82 flip::@2 + //SEG81 flip::@2 b2: - //SEG83 [32] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG82 [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldx srcIdx lda buffer1,x - sta _0 - //SEG84 [33] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _0 ldx dstIdx sta buffer2,x - //SEG85 [34] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG83 [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuz1=_inc_vbuz1 inc srcIdx - //SEG86 [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG84 [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda dstIdx clc adc #$10 sta dstIdx - //SEG87 [36] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG85 [34] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1=_dec_vbuz1 dec c - //SEG88 [37] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG86 [35] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1_neq_0_then_la1 lda c bne b2_from_b2 jmp b4 - //SEG89 flip::@4 + //SEG87 flip::@4 b4: - //SEG90 [38] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) -- vbuz1=_dec_vbuz1 + //SEG88 [36] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) -- vbuz1=_dec_vbuz1 dec dstIdx - //SEG91 [39] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG89 [37] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1=_dec_vbuz1 dec r - //SEG92 [40] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG90 [38] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1_neq_0_then_la1 lda r bne b1_from_b4 - //SEG93 [41] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG91 [39] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG94 [41] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- vbuz1=vbuc1 + //SEG92 [39] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- vbuz1=vbuc1 lda #0 sta i jmp b3 - //SEG95 [41] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG93 [39] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] b3_from_b3: - //SEG96 [41] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy + //SEG94 [39] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy jmp b3 - //SEG97 flip::@3 + //SEG95 flip::@3 b3: - //SEG98 [42] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:2::flip:12 [ flip::i#2 flip::$4 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG96 [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda buffer2,x - sta _4 - //SEG99 [43] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _4 - ldx i sta buffer1,x - //SEG100 [44] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuz1=_inc_vbuz1 + ldx i + //SEG97 [41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG101 [45] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG98 [42] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuz1_neq_0_then_la1 lda i bne b3_from_b3 jmp breturn - //SEG102 flip::@return + //SEG99 flip::@return breturn: - //SEG103 [46] return [ ] ( main:2::flip:12 [ ] ) + //SEG100 [43] return [ ] ( main:2::flip:12 [ ] ) rts } -//SEG104 prepare +//SEG101 prepare prepare: { .label i = $d - //SEG105 [48] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG106 [48] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- vbuz1=vbuc1 + //SEG103 [45] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG107 [48] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] b1_from_b1: - //SEG108 [48] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy + //SEG105 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy jmp b1 - //SEG109 prepare::@1 + //SEG106 prepare::@1 b1: - //SEG110 [49] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG107 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 ldx i txa sta buffer1,x - //SEG111 [50] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG108 [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG112 [51] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG109 [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuz1_neq_0_then_la1 lda i bne b1_from_b1 jmp breturn - //SEG113 prepare::@return + //SEG110 prepare::@return breturn: - //SEG114 [52] return [ ] ( main:2::prepare:5 [ ] ) + //SEG111 [49] return [ ] ( main:2::prepare:5 [ ] ) rts } @@ -4655,41 +4529,47 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::c#4 main::c#1 ] Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a -Statement [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a +Statement [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ plot::i#2 plot::i#3 plot::i#1 ] -Statement [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ plot::x#2 plot::x#1 ] +Statement [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a +Statement [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] +Statement [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a +Statement [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@3 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@4 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a -Statement [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a -Statement [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a +Statement [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) always clobbers reg byte a +Statement [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a +Statement [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) always clobbers reg byte a +Statement [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a +Statement [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::c#4 main::c#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:6 [ plot::i#2 plot::i#3 plot::i#1 ] : zp ZP_BYTE:6 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:7 [ plot::x#2 plot::x#1 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ plot::x#2 plot::x#1 ] : zp ZP_BYTE:7 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] : zp ZP_BYTE:8 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:9 [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] : zp ZP_BYTE:11 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] : zp ZP_BYTE:12 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:13 [ prepare::i#2 prepare::i#1 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:14 [ plot::$3 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:15 [ flip::$0 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ flip::$4 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [flip] 2,002: zp ZP_BYTE:15 [ flip::$0 ] 1,901.9: zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] 1,746.33: zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] 1,537.1: zp ZP_BYTE:9 [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] 286.17: zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] 202: zp ZP_BYTE:16 [ flip::$4 ] 173.94: zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] -Uplift Scope [plot] 2,252.25: zp ZP_BYTE:7 [ plot::x#2 plot::x#1 ] 2,002: zp ZP_BYTE:14 [ plot::$3 ] 1,587.17: zp ZP_BYTE:6 [ plot::i#2 plot::i#3 plot::i#1 ] 239.19: zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] 176.75: zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] +Uplift Scope [flip] 2,054.43: zp ZP_BYTE:9 [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] 2,005: zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] 2,002: zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] 353.5: zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] 176.75: zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] +Uplift Scope [plot] 2,502.5: zp ZP_BYTE:7 [ plot::x#2 plot::x#1 ] 2,104.5: zp ZP_BYTE:6 [ plot::i#2 plot::i#3 plot::i#1 ] 267.83: zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] 180.36: zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Uplift Scope [main] 218.83: zp ZP_BYTE:2 [ main::c#4 main::c#1 ] Uplift Scope [prepare] 38.5: zp ZP_BYTE:13 [ prepare::i#2 prepare::i#1 ] Uplift Scope [] -Uplifting [flip] best 147922 combination reg byte a [ flip::$0 ] zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] reg byte y [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] reg byte x [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte a [ flip::$4 ] zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] -Uplifting [plot] best 123622 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte a [ plot::$3 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] +Uplifting [flip] best 141922 combination reg byte y [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] reg byte x [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] reg byte x [ flip::i#2 flip::i#1 ] zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] +Uplifting [plot] best 123622 combination reg byte y [ plot::x#2 plot::x#1 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Uplifting [main] best 120222 combination reg byte x [ main::c#4 main::c#1 ] Uplifting [prepare] best 120122 combination reg byte x [ prepare::i#2 prepare::i#1 ] Uplifting [] best 120122 combination @@ -4733,7 +4613,7 @@ bend: //SEG9 main main: { //SEG10 [5] call prepare param-assignment [ ] ( main:2 [ ] ) - //SEG11 [47] phi from main to prepare [phi:main->prepare] + //SEG11 [44] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare //SEG12 [6] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] @@ -4776,7 +4656,7 @@ main: { //SEG25 main::@7 b7: //SEG26 [12] call flip param-assignment [ ] ( main:2 [ ] ) - //SEG27 [29] phi from main::@7 to flip [phi:main::@7->flip] + //SEG27 [28] phi from main::@7 to flip [phi:main::@7->flip] flip_from_b7: jsr flip //SEG28 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] @@ -4837,21 +4717,20 @@ plot: { jmp b2 //SEG52 plot::@2 b2: - //SEG53 [20] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG53 [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda buffer1,x - //SEG54 [21] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=vbuaa sta (line),y - //SEG55 [22] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuxx=_inc_vbuxx + //SEG54 [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuxx=_inc_vbuxx inx - //SEG56 [23] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy=_inc_vbuyy + //SEG55 [22] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG57 [24] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy_lt_vbuc1_then_la1 + //SEG56 [23] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy_lt_vbuc1_then_la1 cpy #$10 bcc b2_from_b2 jmp b3 - //SEG58 plot::@3 + //SEG57 plot::@3 b3: - //SEG59 [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG58 [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -4859,132 +4738,130 @@ plot: { bcc !+ inc line+1 !: - //SEG60 [26] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG59 [25] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1=_dec_vbuz1 dec y - //SEG61 [27] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG60 [26] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1_neq_0_then_la1 lda y bne b1_from_b3 jmp breturn - //SEG62 plot::@return + //SEG61 plot::@return breturn: - //SEG63 [28] return [ ] ( main:2::plot:14 [ ] ) + //SEG62 [27] return [ ] ( main:2::plot:14 [ ] ) rts } -//SEG64 flip +//SEG63 flip flip: { .label c = 5 .label r = 4 - //SEG65 [30] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG64 [29] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG66 [30] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 + //SEG65 [29] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 sta r - //SEG67 [30] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- vbuyy=vbuc1 - ldy #$f - //SEG68 [30] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- vbuxx=vbuc1 - ldx #0 + //SEG66 [29] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- vbuxx=vbuc1 + ldx #$f + //SEG67 [29] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- vbuyy=vbuc1 + ldy #0 jmp b1 - //SEG69 [30] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG68 [29] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] b1_from_b4: - //SEG70 [30] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy - //SEG71 [30] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy - //SEG72 [30] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy + //SEG69 [29] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG70 [29] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG71 [29] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy jmp b1 - //SEG73 flip::@1 + //SEG72 flip::@1 b1: - //SEG74 [31] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG73 [30] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG75 [31] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 + //SEG74 [30] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 lda #$10 sta c - //SEG76 [31] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy - //SEG77 [31] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG75 [30] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG76 [30] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG78 [31] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG77 [30] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] b2_from_b2: - //SEG79 [31] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy - //SEG80 [31] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy - //SEG81 [31] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy + //SEG78 [30] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG79 [30] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG80 [30] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy jmp b2 - //SEG82 flip::@2 + //SEG81 flip::@2 b2: - //SEG83 [32] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx - lda buffer1,x - //SEG84 [33] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuyy=vbuaa - sta buffer2,y - //SEG85 [34] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuxx=_inc_vbuxx - inx - //SEG86 [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- vbuyy=vbuyy_plus_vbuc1 - tya + //SEG82 [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + lda buffer1,y + sta buffer2,x + //SEG83 [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG84 [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- vbuxx=vbuxx_plus_vbuc1 + txa clc adc #$10 - tay - //SEG87 [36] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1=_dec_vbuz1 + tax + //SEG85 [34] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1=_dec_vbuz1 dec c - //SEG88 [37] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG86 [35] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1_neq_0_then_la1 lda c bne b2_from_b2 jmp b4 - //SEG89 flip::@4 + //SEG87 flip::@4 b4: - //SEG90 [38] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) -- vbuyy=_dec_vbuyy - dey - //SEG91 [39] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG88 [36] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) -- vbuxx=_dec_vbuxx + dex + //SEG89 [37] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1=_dec_vbuz1 dec r - //SEG92 [40] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG90 [38] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1_neq_0_then_la1 lda r bne b1_from_b4 - //SEG93 [41] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG91 [39] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG94 [41] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 + //SEG92 [39] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 ldx #0 jmp b3 - //SEG95 [41] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG93 [39] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] b3_from_b3: - //SEG96 [41] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy + //SEG94 [39] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy jmp b3 - //SEG97 flip::@3 + //SEG95 flip::@3 b3: - //SEG98 [42] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:2::flip:12 [ flip::i#2 flip::$4 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG96 [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda buffer2,x - //SEG99 [43] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta buffer1,x - //SEG100 [44] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG97 [41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG101 [45] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG98 [42] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b3_from_b3 jmp breturn - //SEG102 flip::@return + //SEG99 flip::@return breturn: - //SEG103 [46] return [ ] ( main:2::flip:12 [ ] ) + //SEG100 [43] return [ ] ( main:2::flip:12 [ ] ) rts } -//SEG104 prepare +//SEG101 prepare prepare: { - //SEG105 [48] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG106 [48] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 + //SEG103 [45] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG107 [48] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] b1_from_b1: - //SEG108 [48] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy + //SEG105 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy jmp b1 - //SEG109 prepare::@1 + //SEG106 prepare::@1 b1: - //SEG110 [49] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + //SEG107 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx txa sta buffer1,x - //SEG111 [50] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG108 [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG112 [51] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG109 [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b1_from_b1 jmp breturn - //SEG113 prepare::@return + //SEG110 prepare::@return breturn: - //SEG114 [52] return [ ] ( main:2::prepare:5 [ ] ) + //SEG111 [49] return [ ] ( main:2::prepare:5 [ ] ) rts } @@ -5087,8 +4964,6 @@ FINAL SYMBOL TABLE (byte[256]) buffer2 (const byte[256]) buffer2#0 buffer2 = ((byte*))(word/signed word) 4352 (void()) flip() -(byte~) flip::$0 reg byte a 2002.0 -(byte~) flip::$4 reg byte a 202.0 (label) flip::@1 (label) flip::@2 (label) flip::@3 @@ -5096,22 +4971,22 @@ FINAL SYMBOL TABLE (label) flip::@return (byte) flip::c (byte) flip::c#1 c zp ZP_BYTE:5 1501.5 -(byte) flip::c#2 c zp ZP_BYTE:5 400.4 +(byte) flip::c#2 c zp ZP_BYTE:5 500.5 (byte) flip::dstIdx -(byte) flip::dstIdx#1 reg byte y 701.0 -(byte) flip::dstIdx#2 reg byte y 67.33333333333333 -(byte) flip::dstIdx#3 reg byte y 776.0 -(byte) flip::dstIdx#5 reg byte y 202.0 +(byte) flip::dstIdx#1 reg byte x 701.0 +(byte) flip::dstIdx#2 reg byte x 67.33333333333333 +(byte) flip::dstIdx#3 reg byte x 1034.6666666666667 +(byte) flip::dstIdx#5 reg byte x 202.0 (byte) flip::i (byte) flip::i#1 reg byte x 151.5 -(byte) flip::i#2 reg byte x 134.66666666666666 +(byte) flip::i#2 reg byte x 202.0 (byte) flip::r (byte) flip::r#1 r zp ZP_BYTE:4 151.5 -(byte) flip::r#4 r zp ZP_BYTE:4 22.444444444444443 +(byte) flip::r#4 r zp ZP_BYTE:4 25.25 (byte) flip::srcIdx -(byte) flip::srcIdx#1 reg byte x 300.42857142857144 -(byte) flip::srcIdx#2 reg byte x 1034.6666666666667 -(byte) flip::srcIdx#3 reg byte x 202.0 +(byte) flip::srcIdx#1 reg byte y 300.42857142857144 +(byte) flip::srcIdx#2 reg byte y 1552.0 +(byte) flip::srcIdx#3 reg byte y 202.0 (void()) main() (label) main::@10 (label) main::@11 @@ -5124,24 +4999,23 @@ FINAL SYMBOL TABLE (byte) main::c#1 reg byte x 151.5 (byte) main::c#4 reg byte x 67.33333333333333 (void()) plot() -(byte~) plot::$3 reg byte a 2002.0 (label) plot::@1 (label) plot::@2 (label) plot::@3 (label) plot::@return (byte) plot::i (byte) plot::i#1 reg byte x 350.5 -(byte) plot::i#2 reg byte x 1034.6666666666667 +(byte) plot::i#2 reg byte x 1552.0 (byte) plot::i#3 reg byte x 202.0 (byte*) plot::line (byte*) plot::line#1 line zp ZP_WORD:2 67.33333333333333 -(byte*) plot::line#4 line zp ZP_WORD:2 171.85714285714283 +(byte*) plot::line#4 line zp ZP_WORD:2 200.50000000000003 (byte) plot::x (byte) plot::x#1 reg byte y 1501.5 -(byte) plot::x#2 reg byte y 750.75 +(byte) plot::x#2 reg byte y 1001.0 (byte) plot::y (byte) plot::y#1 y zp ZP_BYTE:4 151.5 -(byte) plot::y#4 y zp ZP_BYTE:4 25.25 +(byte) plot::y#4 y zp ZP_BYTE:4 28.857142857142858 (void()) prepare() (label) prepare::@1 (label) prepare::@return @@ -5154,14 +5028,11 @@ zp ZP_WORD:2 [ plot::line#4 plot::line#1 ] zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip::r#1 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] reg byte y [ plot::x#2 plot::x#1 ] -reg byte x [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] -reg byte y [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] +reg byte y [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] +reg byte x [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] zp ZP_BYTE:5 [ flip::c#2 flip::c#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte x [ prepare::i#2 prepare::i#1 ] -reg byte a [ plot::$3 ] -reg byte a [ flip::$0 ] -reg byte a [ flip::$4 ] FINAL CODE //SEG0 Basic Upstart @@ -5184,7 +5055,7 @@ FINAL CODE //SEG9 main main: { //SEG10 [5] call prepare param-assignment [ ] ( main:2 [ ] ) - //SEG11 [47] phi from main to prepare [phi:main->prepare] + //SEG11 [44] phi from main to prepare [phi:main->prepare] jsr prepare //SEG12 [6] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b1: @@ -5214,7 +5085,7 @@ main: { //SEG24 [11] phi from main::@6 to main::@7 [phi:main::@6->main::@7] //SEG25 main::@7 //SEG26 [12] call flip param-assignment [ ] ( main:2 [ ] ) - //SEG27 [29] phi from main::@7 to flip [phi:main::@7->flip] + //SEG27 [28] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG28 [13] phi from main::@7 to main::@10 [phi:main::@7->main::@10] //SEG29 main::@10 @@ -5257,19 +5128,18 @@ plot: { //SEG51 [19] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG52 plot::@2 b2: - //SEG53 [20] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG53 [20] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda buffer1,x - //SEG54 [21] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=vbuaa sta (line),y - //SEG55 [22] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuxx=_inc_vbuxx + //SEG54 [21] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuxx=_inc_vbuxx inx - //SEG56 [23] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy=_inc_vbuyy + //SEG55 [22] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG57 [24] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy_lt_vbuc1_then_la1 + //SEG56 [23] if((byte) plot::x#1<(byte/signed byte/word/signed word) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) -- vbuyy_lt_vbuc1_then_la1 cpy #$10 bcc b2 - //SEG58 plot::@3 - //SEG59 [25] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG57 plot::@3 + //SEG58 [24] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda line clc adc #$28 @@ -5277,108 +5147,106 @@ plot: { bcc !+ inc line+1 !: - //SEG60 [26] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG59 [25] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1=_dec_vbuz1 dec y - //SEG61 [27] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG60 [26] if((byte) plot::y#1!=(byte/signed byte/word/signed word) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:2::plot:14 [ plot::i#1 plot::line#1 plot::y#1 ] ) -- vbuz1_neq_0_then_la1 lda y bne b1 - //SEG62 plot::@return - //SEG63 [28] return [ ] ( main:2::plot:14 [ ] ) + //SEG61 plot::@return + //SEG62 [27] return [ ] ( main:2::plot:14 [ ] ) rts } -//SEG64 flip +//SEG63 flip flip: { .label c = 5 .label r = 4 - //SEG65 [30] phi from flip to flip::@1 [phi:flip->flip::@1] - //SEG66 [30] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 + //SEG64 [29] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG65 [29] phi (byte) flip::r#4 = (byte/signed byte/word/signed word) 16 [phi:flip->flip::@1#0] -- vbuz1=vbuc1 lda #$10 sta r - //SEG67 [30] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- vbuyy=vbuc1 - ldy #$f - //SEG68 [30] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- vbuxx=vbuc1 - ldx #0 - //SEG69 [30] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] - //SEG70 [30] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy - //SEG71 [30] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy - //SEG72 [30] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy - //SEG73 flip::@1 + //SEG66 [29] phi (byte) flip::dstIdx#5 = (byte/signed byte/word/signed word) 15 [phi:flip->flip::@1#1] -- vbuxx=vbuc1 + ldx #$f + //SEG67 [29] phi (byte) flip::srcIdx#3 = (byte/signed byte/word/signed word) 0 [phi:flip->flip::@1#2] -- vbuyy=vbuc1 + ldy #0 + //SEG68 [29] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG69 [29] phi (byte) flip::r#4 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG70 [29] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG71 [29] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy + //SEG72 flip::@1 b1: - //SEG74 [31] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] - //SEG75 [31] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 + //SEG73 [30] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG74 [30] phi (byte) flip::c#2 = (byte/signed byte/word/signed word) 16 [phi:flip::@1->flip::@2#0] -- vbuz1=vbuc1 lda #$10 sta c - //SEG76 [31] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy - //SEG77 [31] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy - //SEG78 [31] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] - //SEG79 [31] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy - //SEG80 [31] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy - //SEG81 [31] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy - //SEG82 flip::@2 + //SEG75 [30] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG76 [30] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG77 [30] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG78 [30] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG79 [30] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG80 [30] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy + //SEG81 flip::@2 b2: - //SEG83 [32] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx - lda buffer1,x - //SEG84 [33] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← (byte~) flip::$0 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuyy=vbuaa - sta buffer2,y - //SEG85 [34] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuxx=_inc_vbuxx - inx - //SEG86 [35] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- vbuyy=vbuyy_plus_vbuc1 - tya + //SEG82 [31] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + lda buffer1,y + sta buffer2,x + //SEG83 [32] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG84 [33] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) -- vbuxx=vbuxx_plus_vbuc1 + txa clc adc #$10 - tay - //SEG87 [36] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1=_dec_vbuz1 + tax + //SEG85 [34] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1=_dec_vbuz1 dec c - //SEG88 [37] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG86 [35] if((byte) flip::c#1!=(byte/signed byte/word/signed word) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) -- vbuz1_neq_0_then_la1 lda c bne b2 - //SEG89 flip::@4 - //SEG90 [38] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) -- vbuyy=_dec_vbuyy - dey - //SEG91 [39] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1=_dec_vbuz1 + //SEG87 flip::@4 + //SEG88 [36] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ) -- vbuxx=_dec_vbuxx + dex + //SEG89 [37] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1=_dec_vbuz1 dec r - //SEG92 [40] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1_neq_0_then_la1 + //SEG90 [38] if((byte) flip::r#1!=(byte/signed byte/word/signed word) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:2::flip:12 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ) -- vbuz1_neq_0_then_la1 lda r bne b1 - //SEG93 [41] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] - //SEG94 [41] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 + //SEG91 [39] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG92 [39] phi (byte) flip::i#2 = (byte/signed byte/word/signed word) 0 [phi:flip::@4->flip::@3#0] -- vbuxx=vbuc1 ldx #0 - //SEG95 [41] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] - //SEG96 [41] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy - //SEG97 flip::@3 + //SEG93 [39] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG94 [39] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy + //SEG95 flip::@3 b3: - //SEG98 [42] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:2::flip:12 [ flip::i#2 flip::$4 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG96 [40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda buffer2,x - //SEG99 [43] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta buffer1,x - //SEG100 [44] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG97 [41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG101 [45] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG98 [42] if((byte) flip::i#1!=(byte/signed byte/word/signed word) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b3 - //SEG102 flip::@return - //SEG103 [46] return [ ] ( main:2::flip:12 [ ] ) + //SEG99 flip::@return + //SEG100 [43] return [ ] ( main:2::flip:12 [ ] ) rts } -//SEG104 prepare +//SEG101 prepare prepare: { - //SEG105 [48] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] - //SEG106 [48] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 + //SEG102 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG103 [45] phi (byte) prepare::i#2 = (byte/signed byte/word/signed word) 0 [phi:prepare->prepare::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG107 [48] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] - //SEG108 [48] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy - //SEG109 prepare::@1 + //SEG104 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG105 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy + //SEG106 prepare::@1 b1: - //SEG110 [49] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + //SEG107 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx txa sta buffer1,x - //SEG111 [50] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG108 [47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG112 [51] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx_neq_0_then_la1 + //SEG109 [48] if((byte) prepare::i#1!=(byte/signed byte/word/signed word) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx_neq_0_then_la1 cpx #0 bne b1 - //SEG113 prepare::@return - //SEG114 [52] return [ ] ( main:2::prepare:5 [ ] ) + //SEG110 prepare::@return + //SEG111 [49] return [ ] ( main:2::prepare:5 [ ] ) rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym index e6bdb75c6..5efe50c22 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym @@ -10,8 +10,6 @@ (byte[256]) buffer2 (const byte[256]) buffer2#0 buffer2 = ((byte*))(word/signed word) 4352 (void()) flip() -(byte~) flip::$0 reg byte a 2002.0 -(byte~) flip::$4 reg byte a 202.0 (label) flip::@1 (label) flip::@2 (label) flip::@3 @@ -19,22 +17,22 @@ (label) flip::@return (byte) flip::c (byte) flip::c#1 c zp ZP_BYTE:5 1501.5 -(byte) flip::c#2 c zp ZP_BYTE:5 400.4 +(byte) flip::c#2 c zp ZP_BYTE:5 500.5 (byte) flip::dstIdx -(byte) flip::dstIdx#1 reg byte y 701.0 -(byte) flip::dstIdx#2 reg byte y 67.33333333333333 -(byte) flip::dstIdx#3 reg byte y 776.0 -(byte) flip::dstIdx#5 reg byte y 202.0 +(byte) flip::dstIdx#1 reg byte x 701.0 +(byte) flip::dstIdx#2 reg byte x 67.33333333333333 +(byte) flip::dstIdx#3 reg byte x 1034.6666666666667 +(byte) flip::dstIdx#5 reg byte x 202.0 (byte) flip::i (byte) flip::i#1 reg byte x 151.5 -(byte) flip::i#2 reg byte x 134.66666666666666 +(byte) flip::i#2 reg byte x 202.0 (byte) flip::r (byte) flip::r#1 r zp ZP_BYTE:4 151.5 -(byte) flip::r#4 r zp ZP_BYTE:4 22.444444444444443 +(byte) flip::r#4 r zp ZP_BYTE:4 25.25 (byte) flip::srcIdx -(byte) flip::srcIdx#1 reg byte x 300.42857142857144 -(byte) flip::srcIdx#2 reg byte x 1034.6666666666667 -(byte) flip::srcIdx#3 reg byte x 202.0 +(byte) flip::srcIdx#1 reg byte y 300.42857142857144 +(byte) flip::srcIdx#2 reg byte y 1552.0 +(byte) flip::srcIdx#3 reg byte y 202.0 (void()) main() (label) main::@10 (label) main::@11 @@ -47,24 +45,23 @@ (byte) main::c#1 reg byte x 151.5 (byte) main::c#4 reg byte x 67.33333333333333 (void()) plot() -(byte~) plot::$3 reg byte a 2002.0 (label) plot::@1 (label) plot::@2 (label) plot::@3 (label) plot::@return (byte) plot::i (byte) plot::i#1 reg byte x 350.5 -(byte) plot::i#2 reg byte x 1034.6666666666667 +(byte) plot::i#2 reg byte x 1552.0 (byte) plot::i#3 reg byte x 202.0 (byte*) plot::line (byte*) plot::line#1 line zp ZP_WORD:2 67.33333333333333 -(byte*) plot::line#4 line zp ZP_WORD:2 171.85714285714283 +(byte*) plot::line#4 line zp ZP_WORD:2 200.50000000000003 (byte) plot::x (byte) plot::x#1 reg byte y 1501.5 -(byte) plot::x#2 reg byte y 750.75 +(byte) plot::x#2 reg byte y 1001.0 (byte) plot::y (byte) plot::y#1 y zp ZP_BYTE:4 151.5 -(byte) plot::y#4 y zp ZP_BYTE:4 25.25 +(byte) plot::y#4 y zp ZP_BYTE:4 28.857142857142858 (void()) prepare() (label) prepare::@1 (label) prepare::@return @@ -77,11 +74,8 @@ zp ZP_WORD:2 [ plot::line#4 plot::line#1 ] zp ZP_BYTE:4 [ plot::y#4 plot::y#1 flip::r#4 flip::r#1 ] reg byte x [ plot::i#2 plot::i#3 plot::i#1 ] reg byte y [ plot::x#2 plot::x#1 ] -reg byte x [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] -reg byte y [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] +reg byte y [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] +reg byte x [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] zp ZP_BYTE:5 [ flip::c#2 flip::c#1 ] reg byte x [ flip::i#2 flip::i#1 ] reg byte x [ prepare::i#2 prepare::i#1 ] -reg byte a [ plot::$3 ] -reg byte a [ flip::$0 ] -reg byte a [ flip::$4 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.asm b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.asm new file mode 100644 index 000000000..1784858bc --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.asm @@ -0,0 +1,16 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const SCREEN = $400 + jsr main +main: { + lda #0 + b1: + tax + sta SCREEN,x + clc + adc #2 + cmp #$28 + bcc b1 + rts +} diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.cfg b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.cfg new file mode 100644 index 000000000..e5f7dc84d --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.cfg @@ -0,0 +1,21 @@ +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@1 + [9] return [ ] ( main:2 [ ] ) + to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.log b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.log new file mode 100644 index 000000000..6cfba126f --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.log @@ -0,0 +1,723 @@ +// Classic for() does not allow assignment as increment, eg. for(byte i=0;i<40;i=i+2) {} +// The following should give a program rendering a char on every second char of the first line - but results in a syntax error + +byte* SCREEN = $0400; +void main() { + for(byte i=0;i<40;i=i+2) { + SCREEN[i] = i; + } +} +PROGRAM + (byte*) SCREEN ← (word/signed word) 1024 +proc (void()) main() + (byte) main::i ← (byte/signed byte/word/signed word) 0 +main::@1: + *((byte*) SCREEN + (byte) main::i) ← (byte) main::i + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 + (byte) main::i ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 +main::@return: + return +endproc // main() + call main + +SYMBOLS +(byte*) SCREEN +(void()) main() +(byte~) main::$0 +(boolean~) main::$1 +(label) main::@1 +(label) main::@return +(byte) main::i + +Promoting word/signed word to byte* in SCREEN ← ((byte*)) 1024 +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + *((byte*) SCREEN + (byte) main::i) ← (byte) main::i + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 + (byte) main::i ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +Removing empty block main::@2 +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + *((byte*) SCREEN + (byte) main::i) ← (byte) main::i + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 + (byte) main::i ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +PROCEDURE MODIFY VARIABLE ANALYSIS + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL +@begin: scope:[] from + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + *((byte*) SCREEN + (byte) main::i) ← (byte) main::i + (byte~) main::$0 ← (byte) main::i + (byte/signed byte/word/signed word) 2 + (byte) main::i ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + (byte) main::i#1 ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + (byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 ) + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + (byte) main::i#1 ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + (byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 ) + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +INITIAL SSA SYMBOL TABLE +(label) @1 +(label) @2 +(label) @begin +(label) @end +(byte*) SCREEN +(byte*) SCREEN#0 +(byte*) SCREEN#1 +(byte*) SCREEN#2 +(byte*) SCREEN#3 +(void()) main() +(byte~) main::$0 +(boolean~) main::$1 +(label) main::@1 +(label) main::@return +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 + +Culled Empty Block (label) @2 +Succesful SSA optimization Pass2CullEmptyBlocks +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 + (byte~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + (byte) main::i#1 ← (byte~) main::$0 + (boolean~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + (byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 ) + call main param-assignment + to:@end +@end: scope:[] from @1 + +Not aliassing across scopes: SCREEN#2 SCREEN#3 +Alias (byte) main::i#1 = (byte~) main::$0 +Alias (byte*) SCREEN#0 = (byte*) SCREEN#3 +Succesful SSA optimization Pass2AliasElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#0 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + (boolean~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Not aliassing across scopes: SCREEN#2 SCREEN#0 +Self Phi Eliminated (byte*) SCREEN#1 +Succesful SSA optimization Pass2SelfPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#0 ) + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 ) + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + (boolean~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0 +Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2 +Succesful SSA optimization Pass2RedundantPhiElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + (boolean~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Simple Condition (boolean~) main::$1 if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 +Succesful SSA optimization Pass2ConditionalJumpSimplification +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte) main::i#0 = 0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Inlining constant with var siblings (const byte) main::i#0 +Inlining constant with var siblings (const byte) main::i#0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Succesful SSA optimization Pass2ConstantInlining +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::i +(byte) main::i#1 +(byte) main::i#2 + +Block Sequence Planned @begin @1 @end main main::@1 main::@return +Added new block during phi lifting main::@3(between main::@1 and main::@1) +Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3 +CONTROL FLOW GRAPH - PHI LIFTED +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) + *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 + (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 + if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@3 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +main::@3: scope:[main] from main::@1 + (byte~) main::i#3 ← (byte) main::i#1 + to:main::@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 +CALL GRAPH +Calls in [] to main:2 + +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - LIVE RANGES FOUND +@begin: scope:[] from + [0] phi() [ ] + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] + [2] call main param-assignment [ ] + to:@end +@end: scope:[] from @1 + [3] phi() [ ] +main: scope:[main] from @1 + [4] phi() [ ] + to:main::@1 +main::@1: scope:[main] from main main::@3 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] + [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] + [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@3 [ main::i#1 ] + to:main::@return +main::@return: scope:[main] from main::@1 + [9] return [ ] + to:@return +main::@3: scope:[main] from main::@1 + [10] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] + to:main::@1 + +Created 1 initial phi equivalence classes +Coalesced [10] main::i#3 ← main::i#1 +Coalesced down to 1 phi equivalence classes +Culled Empty Block (label) main::@3 +Block Sequence Planned @begin @1 @end main main::@1 main::@return +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 +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES +@begin: scope:[] from + [0] phi() [ ] + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] + [2] call main param-assignment [ ] + to:@end +@end: scope:[] from @1 + [3] phi() [ ] +main: scope:[main] from @1 + [4] phi() [ ] + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] + [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] + [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] + to:main::@return +main::@return: scope:[main] from main::@1 + [9] return [ ] + to:@return + +CONTROL FLOW GRAPH - PHI MEM COALESCED +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@1 + [9] return [ ] ( main:2 [ ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@1 dominated by @1 @begin +@end dominated by @1 @begin @end +main dominated by @1 @begin main +main::@1 dominated by @1 @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main + +Found back edge: Loop head: main::@1 tails: main::@1 blocks: null +Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 +NATURAL LOOPS +Loop head: main::@1 tails: main::@1 blocks: main::@1 + +Found 0 loops in scope [] +Found 1 loops in scope [main] + Loop head: main::@1 tails: main::@1 blocks: main::@1 +NATURAL LOOPS WITH DEPTH +Loop head: main::@1 tails: main::@1 blocks: main::@1 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(byte*) SCREEN +(void()) main() +(byte) main::i +(byte) main::i#1 16.5 +(byte) main::i#2 22.0 + +Initial phi equivalence classes +[ main::i#2 main::i#1 ] +Complete equivalence classes +[ main::i#2 main::i#1 ] +Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SCREEN = $400 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label i = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta i + jmp b1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG14 main::@1 + b1: + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 + ldx i + txa + sta SCREEN,x + //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + lda i + clc + adc #2 + sta i + //SEG17 [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + lda i + cmp #$28 + bcc b1_from_b1 + jmp breturn + //SEG18 main::@return + breturn: + //SEG19 [9] return [ ] ( main:2 [ ] ) + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Uplift Scope [] + +Uplifting [main] best 283 combination reg byte a [ main::i#2 main::i#1 ] +Uplifting [] best 283 combination + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SCREEN = $400 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + lda #0 + jmp b1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG14 main::@1 + b1: + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuaa=vbuaa + tax + sta SCREEN,x + //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuaa=vbuaa_plus_vbuc1 + clc + adc #2 + //SEG17 [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuaa_lt_vbuc1_then_la1 + cmp #$28 + bcc b1_from_b1 + jmp breturn + //SEG18 main::@return + breturn: + //SEG19 [9] return [ ] ( main:2 [ ] ) + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b1_from_b1 with b1 +Removing instruction bbegin: +Removing instruction b1_from_bbegin: +Removing instruction main_from_b1: +Removing instruction bend_from_b1: +Removing instruction b1_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b1: +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::i +(byte) main::i#1 reg byte a 16.5 +(byte) main::i#2 reg byte a 22.0 + +reg byte a [ main::i#2 main::i#1 ] + +FINAL CODE +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SCREEN = $400 +//SEG2 @begin +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 @1 +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main +main: { + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1 + lda #0 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 main::@1 + b1: + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuaa=vbuaa + tax + sta SCREEN,x + //SEG16 [7] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuaa=vbuaa_plus_vbuc1 + clc + adc #2 + //SEG17 [8] if((byte) main::i#1<(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuaa_lt_vbuc1_then_la1 + cmp #$28 + bcc b1 + //SEG18 main::@return + //SEG19 [9] return [ ] ( main:2 [ ] ) + rts +} + diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.sym b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.sym new file mode 100644 index 000000000..06a341acc --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/forincrementassign.sym @@ -0,0 +1,13 @@ +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::i +(byte) main::i#1 reg byte a 16.5 +(byte) main::i#2 reg byte a 22.0 + +reg byte a [ main::i#2 main::i#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.asm b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.asm index 60e78a001..8a7f501d5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.asm @@ -10,9 +10,9 @@ jsr main main: { .label _1 = 6 - .label _12 = 9 - .label _23 = 9 - .label _33 = 9 + .label _11 = 9 + .label _21 = 9 + .label _30 = 9 .label chargen1 = 7 .label bits_gen = 6 .label charset4 = 4 @@ -62,12 +62,12 @@ main: { ldy #0 lda (chargen),y and #$18 - sta _12 + sta _11 lda (chargen1),y and #$18 lsr lsr - ora _12 + ora _11 lsr tax lda bits_count,x @@ -80,11 +80,11 @@ main: { lda (chargen),y and #6 asl - sta _23 + sta _21 lda (chargen1),y and #6 lsr - ora _23 + ora _21 tax lda bits_count,x cmp #2 @@ -97,10 +97,10 @@ main: { and #1 asl asl - sta _33 + sta _30 lda (chargen1),y and #1 - ora _33 + ora _30 tax lda bits_count,x cmp #2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg index 83a6bc0ff..e868f8c5d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.cfg @@ -21,7 +21,7 @@ main::@1: scope:[main] from main main::@5 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) - [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) + [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) to:main::@7 main::@7: scope:[main] from main::@1 @@ -30,12 +30,12 @@ main::@7: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@7 [17] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ) [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) - [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) - [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) - [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) - [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) - [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) - [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) + [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) + [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) + [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) + [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) + [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) + [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) to:main::@8 main::@8: scope:[main] from main::@2 @@ -44,12 +44,12 @@ main::@8: scope:[main] from main::@2 main::@3: scope:[main] from main::@2 main::@8 [27] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ) [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) - [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) - [30] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) - [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) - [32] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) - [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) - [34] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) + [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) + [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) + [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) + [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) + [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) + [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) to:main::@9 main::@9: scope:[main] from main::@3 @@ -58,11 +58,11 @@ main::@9: scope:[main] from main::@3 main::@4: scope:[main] from main::@3 main::@9 [37] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ) [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) - [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) - [40] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) - [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) - [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) - [43] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) + [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) + [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) + [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) + [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) + [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) to:main::@10 main::@10: scope:[main] from main::@4 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log index 804ff0ed0..3f5cdf0d5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log @@ -65,75 +65,71 @@ main::@1: (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 - (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 - (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$10 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 + (byte~) main::$9 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$9 main::@2: - (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 - (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 - (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$20 + (byte~) main::$10 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 + (byte~) main::$18 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$18 main::@3: - (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 - (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 - (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$30 + (byte~) main::$19 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 + (byte~) main::$27 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$27 main::@4: - (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 - (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 - (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$39 + (byte~) main::$28 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 + (byte~) main::$35 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$35 main::@5: - (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$36 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@6: *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 *((byte*) D018) ← (byte/signed byte/word/signed word) 25 main::@return: return @@ -157,43 +153,39 @@ SYMBOLS (byte~) main::$13 (byte~) main::$14 (byte~) main::$15 -(byte~) main::$16 -(byte~) main::$17 -(boolean~) main::$18 -(boolean~) main::$19 +(boolean~) main::$16 +(boolean~) main::$17 +(byte~) main::$18 +(byte~) main::$19 (byte~) main::$2 (byte~) main::$20 (byte~) main::$21 (byte~) main::$22 (byte~) main::$23 (byte~) main::$24 -(byte~) main::$25 -(byte~) main::$26 +(boolean~) main::$25 +(boolean~) main::$26 (byte~) main::$27 -(boolean~) main::$28 -(boolean~) main::$29 +(byte~) main::$28 +(byte~) main::$29 (byte~) main::$3 (byte~) main::$30 (byte~) main::$31 (byte~) main::$32 -(byte~) main::$33 -(byte~) main::$34 +(boolean~) main::$33 +(boolean~) main::$34 (byte~) main::$35 (byte~) main::$36 -(boolean~) main::$37 -(boolean~) main::$38 -(byte~) main::$39 +(byte*~) main::$37 +(byte*~) main::$38 +(boolean~) main::$39 (byte~) main::$4 -(byte~) main::$40 -(byte*~) main::$41 -(byte*~) main::$42 -(boolean~) main::$43 -(boolean~) main::$44 +(boolean~) main::$40 (byte~) main::$5 (byte~) main::$6 -(byte~) main::$7 +(boolean~) main::$7 (boolean~) main::$8 -(boolean~) main::$9 +(byte~) main::$9 (label) main::@1 (label) main::@2 (label) main::@3 @@ -240,79 +232,75 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 - (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 - (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 - (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 - (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 - (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 - (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 - (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 - (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$36 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 @@ -322,8 +310,8 @@ main::@11: scope:[main] from main::@5 main::@6: scope:[main] from main::@11 main::@6 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018) ← (byte/signed byte/word/signed word) 25 @@ -362,79 +350,75 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 - (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 - (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 - (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 - (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 - (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 - (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 - (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 - (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$36 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 @@ -444,8 +428,8 @@ main::@11: scope:[main] from main::@5 main::@6: scope:[main] from main::@11 main::@6 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018) ← (byte/signed byte/word/signed word) 25 @@ -485,79 +469,75 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count *idx (byte~) main::$6 - (byte) main::bits ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 - (byte~) main::$11 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count *idx (byte~) main::$16 - (byte) main::bits ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 - (byte~) main::$10 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 - (byte~) main::$21 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count *idx (byte~) main::$26 - (byte) main::bits ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 - (byte~) main::$20 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 - (byte~) main::$31 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count *idx (byte~) main::$35 - (byte) main::bits ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits ← *((byte[]) bits_count + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 - (byte~) main::$30 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 - (byte~) main::$40 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$36 *((byte*) main::charset4) ← (byte) main::bits_gen (byte*) main::charset4 ← ++ (byte*) main::charset4 - (byte*~) main::$41 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 - (byte~) main::$39 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 @@ -567,8 +547,8 @@ main::@11: scope:[main] from main::@5 main::@6: scope:[main] from main::@11 main::@6 *((byte*) SCREEN + (byte) main::i) ← (byte) main::i (byte) main::i ← ++ (byte) main::i - (boolean~) main::$44 ← (byte) main::i != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018) ← (byte/signed byte/word/signed word) 25 @@ -631,11 +611,10 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte*) D018#9 ← phi( main::@1/(byte*) D018#11 main::@7/(byte*) D018#12 ) @@ -647,18 +626,17 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 - (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#1 ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte*) D018#12 ← phi( main::@1/(byte*) D018#11 ) @@ -670,8 +648,8 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#2 ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#2 ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte*) D018#7 ← phi( main::@2/(byte*) D018#9 main::@8/(byte*) D018#10 ) @@ -683,18 +661,17 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 - (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#3 ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte*) D018#10 ← phi( main::@2/(byte*) D018#9 ) @@ -706,8 +683,8 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#4 ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#4 ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte*) D018#6 ← phi( main::@3/(byte*) D018#7 main::@9/(byte*) D018#8 ) @@ -719,17 +696,16 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 - (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#5 ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte*) D018#8 ← phi( main::@3/(byte*) D018#7 ) @@ -741,8 +717,8 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#6 ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#6 ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 ) @@ -753,15 +729,15 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#7 ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#7 ← (byte~) main::$36 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen#1 ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN#2 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte*) D018#5 ← phi( main::@4/(byte*) D018#6 ) @@ -772,8 +748,8 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#8 ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#8 ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) @@ -789,8 +765,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) @@ -850,11 +826,10 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte*) D018#9 ← phi( main::@1/(byte*) D018#11 main::@7/(byte*) D018#12 ) @@ -866,18 +841,17 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 - (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#1 ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte*) D018#12 ← phi( main::@1/(byte*) D018#11 ) @@ -889,8 +863,8 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#2 ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#2 ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte*) D018#7 ← phi( main::@2/(byte*) D018#9 main::@8/(byte*) D018#10 ) @@ -902,18 +876,17 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 - (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#3 ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte*) D018#10 ← phi( main::@2/(byte*) D018#9 ) @@ -925,8 +898,8 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#4 ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#4 ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte*) D018#6 ← phi( main::@3/(byte*) D018#7 main::@9/(byte*) D018#8 ) @@ -938,17 +911,16 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 - (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#5 ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte*) D018#8 ← phi( main::@3/(byte*) D018#7 ) @@ -960,8 +932,8 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#6 ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#6 ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 ) @@ -972,15 +944,15 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#7 ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#7 ← (byte~) main::$36 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen#1 ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN#2 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte*) D018#5 ← phi( main::@4/(byte*) D018#6 ) @@ -991,8 +963,8 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#8 ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#8 ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) @@ -1008,8 +980,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) @@ -1120,43 +1092,39 @@ INITIAL SSA SYMBOL TABLE (byte~) main::$13 (byte~) main::$14 (byte~) main::$15 -(byte~) main::$16 -(byte~) main::$17 -(boolean~) main::$18 -(boolean~) main::$19 +(boolean~) main::$16 +(boolean~) main::$17 +(byte~) main::$18 +(byte~) main::$19 (byte~) main::$2 (byte~) main::$20 (byte~) main::$21 (byte~) main::$22 (byte~) main::$23 (byte~) main::$24 -(byte~) main::$25 -(byte~) main::$26 +(boolean~) main::$25 +(boolean~) main::$26 (byte~) main::$27 -(boolean~) main::$28 -(boolean~) main::$29 +(byte~) main::$28 +(byte~) main::$29 (byte~) main::$3 (byte~) main::$30 (byte~) main::$31 (byte~) main::$32 -(byte~) main::$33 -(byte~) main::$34 +(boolean~) main::$33 +(boolean~) main::$34 (byte~) main::$35 (byte~) main::$36 -(boolean~) main::$37 -(boolean~) main::$38 -(byte~) main::$39 +(byte*~) main::$37 +(byte*~) main::$38 +(boolean~) main::$39 (byte~) main::$4 -(byte~) main::$40 -(byte*~) main::$41 -(byte*~) main::$42 -(boolean~) main::$43 -(boolean~) main::$44 +(boolean~) main::$40 (byte~) main::$5 (byte~) main::$6 -(byte~) main::$7 +(boolean~) main::$7 (boolean~) main::$8 -(boolean~) main::$9 +(byte~) main::$9 (label) main::@1 (label) main::@10 (label) main::@11 @@ -1270,11 +1238,10 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$9 ← ! (boolean~) main::$8 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$8 ← ! (boolean~) main::$7 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte*) D018#9 ← phi( main::@1/(byte*) D018#11 main::@7/(byte*) D018#12 ) @@ -1286,18 +1253,17 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 - (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$19 ← ! (boolean~) main::$18 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#1 ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15) + (boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$17 ← ! (boolean~) main::$16 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte*) D018#12 ← phi( main::@1/(byte*) D018#11 ) @@ -1309,8 +1275,8 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#2 ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#2 ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte*) D018#7 ← phi( main::@2/(byte*) D018#9 main::@8/(byte*) D018#10 ) @@ -1322,18 +1288,17 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 - (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$29 ← ! (boolean~) main::$28 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#3 ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24) + (boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$26 ← ! (boolean~) main::$25 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte*) D018#10 ← phi( main::@2/(byte*) D018#9 ) @@ -1345,8 +1310,8 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#4 ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#4 ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte*) D018#6 ← phi( main::@3/(byte*) D018#7 main::@9/(byte*) D018#8 ) @@ -1358,17 +1323,16 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 - (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 - (boolean~) main::$38 ← ! (boolean~) main::$37 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#5 ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32) + (boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 + (boolean~) main::$34 ← ! (boolean~) main::$33 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte*) D018#8 ← phi( main::@3/(byte*) D018#7 ) @@ -1380,8 +1344,8 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#6 ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#6 ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 ) @@ -1392,15 +1356,15 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#7 ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#7 ← (byte~) main::$36 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen#1 ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN#2 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte*) D018#5 ← phi( main::@4/(byte*) D018#6 ) @@ -1411,8 +1375,8 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#8 ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#8 ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) @@ -1428,8 +1392,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) @@ -1449,10 +1413,10 @@ main::@return: scope:[main] from main::@12 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$8 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 -Inversing boolean not (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$18 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 -Inversing boolean not (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$28 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 -Inversing boolean not (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$37 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word) 2 +Inversing boolean not (boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 from (boolean~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word) 2 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -1492,10 +1456,9 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$7 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (byte) main::bits#0 ← (byte~) main::$7 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte*) D018#9 ← phi( main::@1/(byte*) D018#11 main::@7/(byte*) D018#12 ) @@ -1507,17 +1470,16 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 ) (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) - (byte~) main::$11 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#1 ← (byte~) main::$11 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$17 ← (byte[]) bits_count#2 *idx (byte~) main::$16 - (byte) main::bits#1 ← (byte~) main::$17 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$10 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#1 ← (byte~) main::$10 + (byte~) main::$11 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15) + (boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte*) D018#12 ← phi( main::@1/(byte*) D018#11 ) @@ -1529,8 +1491,8 @@ main::@7: scope:[main] from main::@1 (byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 ) (byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 ) (byte) main::bits_gen#10 ← phi( main::@1/(byte) main::bits_gen#0 ) - (byte~) main::$10 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#2 ← (byte~) main::$10 + (byte~) main::$9 ← (byte) main::bits_gen#10 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#2 ← (byte~) main::$9 to:main::@2 main::@3: scope:[main] from main::@2 main::@8 (byte*) D018#7 ← phi( main::@2/(byte*) D018#9 main::@8/(byte*) D018#10 ) @@ -1542,17 +1504,16 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 ) (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) - (byte~) main::$21 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#3 ← (byte~) main::$21 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte~) main::$27 ← (byte[]) bits_count#3 *idx (byte~) main::$26 - (byte) main::bits#2 ← (byte~) main::$27 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$19 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#3 ← (byte~) main::$19 + (byte~) main::$20 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24) + (boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte*) D018#10 ← phi( main::@2/(byte*) D018#9 ) @@ -1564,8 +1525,8 @@ main::@8: scope:[main] from main::@2 (byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 ) (byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 ) (byte) main::bits_gen#12 ← phi( main::@2/(byte) main::bits_gen#1 ) - (byte~) main::$20 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#4 ← (byte~) main::$20 + (byte~) main::$18 ← (byte) main::bits_gen#12 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#4 ← (byte~) main::$18 to:main::@3 main::@4: scope:[main] from main::@3 main::@9 (byte*) D018#6 ← phi( main::@3/(byte*) D018#7 main::@9/(byte*) D018#8 ) @@ -1577,16 +1538,15 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 ) (byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#3 main::@9/(byte) main::bits_gen#6 ) - (byte~) main::$31 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#5 ← (byte~) main::$31 - (byte~) main::$32 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte~) main::$36 ← (byte[]) bits_count#4 *idx (byte~) main::$35 - (byte) main::bits#3 ← (byte~) main::$36 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$28 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#5 ← (byte~) main::$28 + (byte~) main::$29 ← *((byte*) main::chargen#5) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#4 + (byte~) main::$32) + (boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte*) D018#8 ← phi( main::@3/(byte*) D018#7 ) @@ -1598,8 +1558,8 @@ main::@9: scope:[main] from main::@3 (byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 ) (byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 ) (byte) main::bits_gen#14 ← phi( main::@3/(byte) main::bits_gen#3 ) - (byte~) main::$30 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#6 ← (byte~) main::$30 + (byte~) main::$27 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#6 ← (byte~) main::$27 to:main::@4 main::@5: scope:[main] from main::@10 main::@4 (byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 ) @@ -1610,15 +1570,15 @@ main::@5: scope:[main] from main::@10 main::@4 (byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$40 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#7 ← (byte~) main::$40 + (byte~) main::$36 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#7 ← (byte~) main::$36 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 - (byte*~) main::$41 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 - (byte*) main::chargen#1 ← (byte*~) main::$41 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$37 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 + (byte*) main::chargen#1 ← (byte*~) main::$37 + (byte*~) main::$38 ← (byte*) CHARGEN#2 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte*) D018#5 ← phi( main::@4/(byte*) D018#6 ) @@ -1629,8 +1589,8 @@ main::@10: scope:[main] from main::@4 (byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 ) (byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 ) (byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 ) - (byte~) main::$39 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 - (byte) main::bits_gen#8 ← (byte~) main::$39 + (byte~) main::$35 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 + (byte) main::bits_gen#8 ← (byte~) main::$35 to:main::@5 main::@11: scope:[main] from main::@5 (byte*) D018#3 ← phi( main::@5/(byte*) D018#4 ) @@ -1646,8 +1606,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 (byte*) D018#1 ← phi( main::@6/(byte*) D018#2 ) @@ -1676,9 +1636,7 @@ Not aliassing across scopes: D018#13 D018#14 Not aliassing across scopes: main::chargen#0 CHARGEN#1 Not aliassing across scopes: main::charset4#0 CHARSET4#1 Alias (byte*) main::chargen1#0 = (byte*~) main::$0 (byte*) main::chargen1#4 -Alias (byte) main::bits#0 = (byte~) main::$7 -Alias (byte) main::bits_gen#1 = (byte~) main::$11 (byte) main::bits_gen#12 -Alias (byte) main::bits#1 = (byte~) main::$17 +Alias (byte) main::bits_gen#1 = (byte~) main::$10 (byte) main::bits_gen#12 Alias (byte) main::bits_gen#0 = (byte) main::bits_gen#10 Alias (byte*) main::chargen#2 = (byte*) main::chargen#7 Alias (byte[]) bits_count#1 = (byte[]) bits_count#7 @@ -1687,9 +1645,8 @@ Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#11 Alias (byte*) PROCPORT#11 = (byte*) PROCPORT#12 Alias (byte*) SCREEN#10 = (byte*) SCREEN#11 Alias (byte*) D018#11 = (byte*) D018#12 -Alias (byte) main::bits_gen#2 = (byte~) main::$10 -Alias (byte) main::bits_gen#14 = (byte) main::bits_gen#3 (byte~) main::$21 -Alias (byte) main::bits#2 = (byte~) main::$27 +Alias (byte) main::bits_gen#2 = (byte~) main::$9 +Alias (byte) main::bits_gen#14 = (byte) main::bits_gen#3 (byte~) main::$19 Alias (byte*) main::chargen#3 = (byte*) main::chargen#8 Alias (byte*) main::chargen1#1 = (byte*) main::chargen1#5 Alias (byte[]) bits_count#2 = (byte[]) bits_count#8 @@ -1698,9 +1655,8 @@ Alias (byte*) CHARGEN#8 = (byte*) CHARGEN#9 Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#9 Alias (byte*) SCREEN#8 = (byte*) SCREEN#9 Alias (byte*) D018#10 = (byte*) D018#9 -Alias (byte) main::bits_gen#4 = (byte~) main::$20 -Alias (byte) main::bits_gen#16 = (byte) main::bits_gen#5 (byte~) main::$31 -Alias (byte) main::bits#3 = (byte~) main::$36 +Alias (byte) main::bits_gen#4 = (byte~) main::$18 +Alias (byte) main::bits_gen#16 = (byte) main::bits_gen#5 (byte~) main::$28 Alias (byte*) main::chargen#4 = (byte*) main::chargen#9 Alias (byte*) main::chargen1#2 = (byte*) main::chargen1#6 Alias (byte[]) bits_count#3 = (byte[]) bits_count#9 @@ -1709,9 +1665,9 @@ Alias (byte*) CHARGEN#6 = (byte*) CHARGEN#7 Alias (byte*) PROCPORT#7 = (byte*) PROCPORT#8 Alias (byte*) SCREEN#6 = (byte*) SCREEN#7 Alias (byte*) D018#7 = (byte*) D018#8 -Alias (byte) main::bits_gen#6 = (byte~) main::$30 -Alias (byte) main::bits_gen#7 = (byte~) main::$40 -Alias (byte*) main::chargen#1 = (byte*~) main::$41 +Alias (byte) main::bits_gen#6 = (byte~) main::$27 +Alias (byte) main::bits_gen#7 = (byte~) main::$36 +Alias (byte*) main::chargen#1 = (byte*~) main::$37 Alias (byte*) main::charset4#3 = (byte*) main::charset4#4 Alias (byte*) main::chargen#10 = (byte*) main::chargen#5 Alias (byte*) CHARGEN#4 = (byte*) CHARGEN#5 @@ -1719,7 +1675,7 @@ Alias (byte[]) bits_count#11 = (byte[]) bits_count#4 Alias (byte*) PROCPORT#5 = (byte*) PROCPORT#6 Alias (byte*) SCREEN#4 = (byte*) SCREEN#5 Alias (byte*) D018#5 = (byte*) D018#6 -Alias (byte) main::bits_gen#8 = (byte~) main::$39 +Alias (byte) main::bits_gen#8 = (byte~) main::$35 Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#4 Alias (byte*) SCREEN#2 = (byte*) SCREEN#3 Alias (byte*) D018#3 = (byte*) D018#4 @@ -1768,9 +1724,9 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte*) D018#10 ← phi( main::@1/(byte*) D018#11 main::@7/(byte*) D018#11 ) @@ -1783,14 +1739,14 @@ main::@2: scope:[main] from main::@1 main::@7 (byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#2 ) (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (byte[]) bits_count#2 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$11 ← *((byte*) main::chargen#3) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#1) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#2 + (byte~) main::$15) + (boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 @@ -1806,14 +1762,14 @@ main::@3: scope:[main] from main::@2 main::@8 (byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#3 ) (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (byte[]) bits_count#3 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$20 ← *((byte*) main::chargen#4) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#2) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#3 + (byte~) main::$24) + (boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 @@ -1829,13 +1785,13 @@ main::@4: scope:[main] from main::@3 main::@9 (byte*) main::chargen#10 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#4 ) (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (byte[]) bits_count#11 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#3) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#11 + (byte~) main::$32) + (boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 @@ -1853,9 +1809,9 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#2) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#2 (byte*) main::chargen#1 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#2 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$38 ← (byte*) CHARGEN#2 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -1871,8 +1827,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 @@ -1939,21 +1895,21 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (byte[]) bits_count#1 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#1 + (byte~) main::$15) + (boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 @@ -1961,14 +1917,14 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (byte[]) bits_count#1 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#1 + (byte~) main::$24) + (boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 @@ -1976,13 +1932,13 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (byte[]) bits_count#1 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#1 + (byte~) main::$32) + (boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 @@ -1993,9 +1949,9 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#10 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$38 ← (byte*) CHARGEN#10 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -2011,8 +1967,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 @@ -2078,21 +2034,21 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (byte[]) bits_count#1 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#1 + (byte~) main::$6) + (boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (byte[]) bits_count#1 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#1 + (byte~) main::$15) + (boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 @@ -2100,14 +2056,14 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (byte[]) bits_count#1 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#1 + (byte~) main::$24) + (boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 @@ -2115,13 +2071,13 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (byte[]) bits_count#1 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#1 + (byte~) main::$32) + (boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 @@ -2132,9 +2088,9 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#10 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$38 ← (byte*) CHARGEN#10 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -2150,8 +2106,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018#1) ← (byte/signed byte/word/signed word) 25 @@ -2204,21 +2160,21 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (byte[]) bits_count#0 *idx (byte~) main::$6 - (boolean~) main::$9 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$9) goto main::@2 + (byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6) + (boolean~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$8) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (byte[]) bits_count#0 *idx (byte~) main::$16 - (boolean~) main::$19 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$19) goto main::@3 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15) + (boolean~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$17) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 (byte) main::bits_gen#2 ← (byte) main::bits_gen#0 + (byte/signed byte/word/signed word) 1 @@ -2226,14 +2182,14 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (byte[]) bits_count#0 *idx (byte~) main::$26 - (boolean~) main::$29 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$29) goto main::@4 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24) + (boolean~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$26) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte/signed byte/word/signed word) 1 @@ -2241,13 +2197,13 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (byte[]) bits_count#0 *idx (byte~) main::$35 - (boolean~) main::$38 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 - if((boolean~) main::$38) goto main::@5 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32) + (boolean~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word) 2 + if((boolean~) main::$34) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte/signed byte/word/signed word) 1 @@ -2258,9 +2214,9 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#0 + (word/signed word) 2048 - (boolean~) main::$43 ← (byte*) main::chargen#1 < (byte*~) main::$42 - if((boolean~) main::$43) goto main::@1 + (byte*~) main::$38 ← (byte*) CHARGEN#0 + (word/signed word) 2048 + (boolean~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38 + if((boolean~) main::$39) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -2274,8 +2230,8 @@ main::@6: scope:[main] from main::@11 main::@6 (byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 ) *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$44 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 - if((boolean~) main::$44) goto main::@6 + (boolean~) main::$40 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 0 + if((boolean~) main::$40) goto main::@6 to:main::@12 main::@12: scope:[main] from main::@6 *((byte*) D018#0) ← (byte/signed byte/word/signed word) 25 @@ -2288,12 +2244,12 @@ main::@return: scope:[main] from main::@12 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$9 if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 -Simple Condition (boolean~) main::$19 if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 -Simple Condition (boolean~) main::$29 if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 -Simple Condition (boolean~) main::$38 if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 -Simple Condition (boolean~) main::$43 if((byte*) main::chargen#1<(byte*~) main::$42) goto main::@1 -Simple Condition (boolean~) main::$44 if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 +Simple Condition (boolean~) main::$8 if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 +Simple Condition (boolean~) main::$17 if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 +Simple Condition (boolean~) main::$26 if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 +Simple Condition (boolean~) main::$34 if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 +Simple Condition (boolean~) main::$39 if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1 +Simple Condition (boolean~) main::$40 if((byte) main::i#1!=(byte/signed byte/word/signed word) 0) goto main::@6 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -2321,18 +2277,18 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (byte[]) bits_count#0 *idx (byte~) main::$6 + (byte) main::bits#0 ← *((byte[]) bits_count#0 + (byte~) main::$6) if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (byte[]) bits_count#0 *idx (byte~) main::$16 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((byte[]) bits_count#0 + (byte~) main::$15) if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 @@ -2341,12 +2297,12 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (byte[]) bits_count#0 *idx (byte~) main::$26 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((byte[]) bits_count#0 + (byte~) main::$24) if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 @@ -2355,11 +2311,11 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (byte[]) bits_count#0 *idx (byte~) main::$35 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((byte[]) bits_count#0 + (byte~) main::$32) if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 @@ -2371,8 +2327,8 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 - (byte*~) main::$42 ← (byte*) CHARGEN#0 + (word/signed word) 2048 - if((byte*) main::chargen#1<(byte*~) main::$42) goto main::@1 + (byte*~) main::$38 ← (byte*) CHARGEN#0 + (word/signed word) 2048 + if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -2427,18 +2383,18 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 + (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(const byte) main::bits_gen#0 main::@7/(byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 @@ -2447,12 +2403,12 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 @@ -2461,11 +2417,11 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 @@ -2477,8 +2433,8 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 - (byte*~) main::$42 ← (const byte*) CHARGEN#0 + (word/signed word) 2048 - if((byte*) main::chargen#1<(byte*~) main::$42) goto main::@1 + (byte*~) main::$38 ← (const byte*) CHARGEN#0 + (word/signed word) 2048 + if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -2507,7 +2463,7 @@ main::@return: scope:[main] from main::@12 Constant (const byte*) main::chargen#0 = CHARGEN#0 Constant (const byte*) main::charset4#0 = CHARSET4#0 Constant (const byte) main::bits_gen#2 = main::bits_gen#0+1 -Constant (const byte*) main::$42 = CHARGEN#0+2048 +Constant (const byte*) main::$38 = CHARGEN#0+2048 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -2526,18 +2482,18 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 + (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(const byte) main::bits_gen#0 main::@7/(const byte) main::bits_gen#2 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 @@ -2545,12 +2501,12 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 @@ -2559,11 +2515,11 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 @@ -2575,7 +2531,7 @@ main::@5: scope:[main] from main::@10 main::@4 *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 - if((byte*) main::chargen#1<(const byte*) main::$42) goto main::@1 + if((byte*) main::chargen#1<(const byte*) main::$38) goto main::@1 to:main::@11 main::@10: scope:[main] from main::@4 (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte/signed byte/word/signed word) 1 @@ -2648,7 +2604,7 @@ Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::bits_gen#2 = (byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 Constant inlined main::chargen#0 = (const byte*) CHARGEN#0 Constant inlined main::bits_gen#0 = (byte/signed byte/word/signed word) 0 -Constant inlined main::$42 = (const byte*) CHARGEN#0+(word/signed word) 2048 +Constant inlined main::$38 = (const byte*) CHARGEN#0+(word/signed word) 2048 Constant inlined main::charset4#0 = (const byte*) CHARSET4#0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @@ -2668,18 +2624,18 @@ main::@1: scope:[main] from main main::@5 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 + (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 to:main::@8 main::@7: scope:[main] from main::@1 @@ -2687,12 +2643,12 @@ main::@7: scope:[main] from main::@1 main::@3: scope:[main] from main::@2 main::@8 (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 to:main::@9 main::@8: scope:[main] from main::@2 @@ -2701,11 +2657,11 @@ main::@8: scope:[main] from main::@2 main::@4: scope:[main] from main::@3 main::@9 (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 to:main::@10 main::@9: scope:[main] from main::@3 @@ -2761,22 +2717,22 @@ FINAL SYMBOL TABLE (const byte[]) bits_count#0 = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (void()) main() (byte~) main::$1 +(byte~) main::$11 (byte~) main::$12 (byte~) main::$13 (byte~) main::$14 (byte~) main::$15 -(byte~) main::$16 (byte~) main::$2 +(byte~) main::$20 +(byte~) main::$21 (byte~) main::$22 (byte~) main::$23 (byte~) main::$24 -(byte~) main::$25 -(byte~) main::$26 +(byte~) main::$29 (byte~) main::$3 +(byte~) main::$30 +(byte~) main::$31 (byte~) main::$32 -(byte~) main::$33 -(byte~) main::$34 -(byte~) main::$35 (byte~) main::$4 (byte~) main::$5 (byte~) main::$6 @@ -2850,7 +2806,7 @@ main::@1: scope:[main] from main main::@13 (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 - (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 + (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 to:main::@7 main::@7: scope:[main] from main::@1 @@ -2858,12 +2814,12 @@ main::@7: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@7 (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 - (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 - (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 - (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 - (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 - (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 - (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 + (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 + (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 + (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 + (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 + (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 + (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@14 to:main::@8 main::@8: scope:[main] from main::@2 @@ -2873,12 +2829,12 @@ main::@8: scope:[main] from main::@2 main::@3: scope:[main] from main::@14 main::@8 (byte) main::bits_gen#11 ← phi( main::@14/(byte~) main::bits_gen#17 main::@8/(byte~) main::bits_gen#18 ) (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 - (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 - (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 - (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 - (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 - (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 - (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 + (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 + (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 + (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 + (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 + (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 + (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@15 to:main::@9 main::@9: scope:[main] from main::@3 @@ -2888,11 +2844,11 @@ main::@9: scope:[main] from main::@3 main::@4: scope:[main] from main::@15 main::@9 (byte) main::bits_gen#13 ← phi( main::@15/(byte~) main::bits_gen#19 main::@9/(byte~) main::bits_gen#20 ) (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 - (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 - (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 - (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 - (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 - (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 + (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 + (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 + (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 + (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 + (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@16 to:main::@10 main::@10: scope:[main] from main::@4 @@ -3010,7 +2966,7 @@ main::@1: scope:[main] from main main::@13 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] - [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] + [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] to:main::@7 main::@7: scope:[main] from main::@1 @@ -3019,12 +2975,12 @@ main::@7: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@7 [17] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] - [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] - [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] - [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] - [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] - [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] - [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] + [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] + [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] + [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] + [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] + [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] + [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] to:main::@8 main::@8: scope:[main] from main::@2 @@ -3034,12 +2990,12 @@ main::@8: scope:[main] from main::@2 main::@3: scope:[main] from main::@14 main::@8 [28] (byte) main::bits_gen#11 ← phi( main::@14/(byte~) main::bits_gen#17 main::@8/(byte~) main::bits_gen#18 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] [29] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] - [30] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] - [31] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] - [32] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] - [33] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] - [34] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] - [35] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] + [30] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] + [31] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] + [32] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] + [33] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] + [34] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] + [35] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] [36] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@15 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] to:main::@9 main::@9: scope:[main] from main::@3 @@ -3049,11 +3005,11 @@ main::@9: scope:[main] from main::@3 main::@4: scope:[main] from main::@15 main::@9 [39] (byte) main::bits_gen#13 ← phi( main::@15/(byte~) main::bits_gen#19 main::@9/(byte~) main::bits_gen#20 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] [40] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] - [41] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] - [42] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] - [43] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] - [44] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] - [45] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] + [41] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] + [42] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] + [43] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] + [44] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] + [45] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] [46] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@16 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] to:main::@10 main::@10: scope:[main] from main::@4 @@ -3186,7 +3142,7 @@ main::@1: scope:[main] from main main::@5 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] - [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] + [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] to:main::@7 main::@7: scope:[main] from main::@1 @@ -3195,12 +3151,12 @@ main::@7: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@7 [17] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] - [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] - [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] - [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] - [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] - [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] - [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] + [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] + [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] + [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] + [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] + [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] + [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] to:main::@8 main::@8: scope:[main] from main::@2 @@ -3209,12 +3165,12 @@ main::@8: scope:[main] from main::@2 main::@3: scope:[main] from main::@2 main::@8 [27] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] - [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] - [30] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] - [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] - [32] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] - [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] - [34] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] + [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] + [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] + [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] + [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] + [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] + [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] to:main::@9 main::@9: scope:[main] from main::@3 @@ -3223,11 +3179,11 @@ main::@9: scope:[main] from main::@3 main::@4: scope:[main] from main::@3 main::@9 [37] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] - [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] - [40] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] - [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] - [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] - [43] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] + [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] + [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] + [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] + [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] + [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] to:main::@10 main::@10: scope:[main] from main::@4 @@ -3282,7 +3238,7 @@ main::@1: scope:[main] from main main::@5 [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) [12] (byte~) main::$5 ← (byte~) main::$4 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ) [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) - [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) + [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) to:main::@7 main::@7: scope:[main] from main::@1 @@ -3291,12 +3247,12 @@ main::@7: scope:[main] from main::@1 main::@2: scope:[main] from main::@1 main::@7 [17] (byte) main::bits_gen#9 ← phi( main::@1/(byte/signed byte/word/signed word) 0 main::@7/(byte/signed byte/word/signed word) 0+(byte/signed byte/word/signed word) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ) [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) - [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) - [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) - [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) - [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) - [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) - [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) + [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) + [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) + [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) + [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) + [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) + [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) to:main::@8 main::@8: scope:[main] from main::@2 @@ -3305,12 +3261,12 @@ main::@8: scope:[main] from main::@2 main::@3: scope:[main] from main::@2 main::@8 [27] (byte) main::bits_gen#11 ← phi( main::@2/(byte) main::bits_gen#1 main::@8/(byte) main::bits_gen#4 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] ) [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) - [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) - [30] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) - [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) - [32] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) - [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) - [34] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) + [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) + [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) + [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) + [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) + [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) + [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) to:main::@9 main::@9: scope:[main] from main::@3 @@ -3319,11 +3275,11 @@ main::@9: scope:[main] from main::@3 main::@4: scope:[main] from main::@3 main::@9 [37] (byte) main::bits_gen#13 ← phi( main::@3/(byte) main::bits_gen#14 main::@9/(byte) main::bits_gen#6 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] ) [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) - [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) - [40] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) - [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) - [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) - [43] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) + [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) + [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) + [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) + [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) + [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) to:main::@10 main::@10: scope:[main] from main::@4 @@ -3399,22 +3355,22 @@ VARIABLE REGISTER WEIGHTS (byte[]) bits_count (void()) main() (byte~) main::$1 7.333333333333333 -(byte~) main::$12 7.333333333333333 +(byte~) main::$11 7.333333333333333 +(byte~) main::$12 22.0 (byte~) main::$13 22.0 (byte~) main::$14 22.0 (byte~) main::$15 22.0 -(byte~) main::$16 22.0 (byte~) main::$2 22.0 +(byte~) main::$20 22.0 +(byte~) main::$21 7.333333333333333 (byte~) main::$22 22.0 -(byte~) main::$23 7.333333333333333 +(byte~) main::$23 22.0 (byte~) main::$24 22.0 -(byte~) main::$25 22.0 -(byte~) main::$26 22.0 +(byte~) main::$29 22.0 (byte~) main::$3 22.0 +(byte~) main::$30 11.0 +(byte~) main::$31 22.0 (byte~) main::$32 22.0 -(byte~) main::$33 11.0 -(byte~) main::$34 22.0 -(byte~) main::$35 22.0 (byte~) main::$4 22.0 (byte~) main::$5 22.0 (byte~) main::$6 22.0 @@ -3463,22 +3419,22 @@ Added variable main::$4 to zero page equivalence class [ main::$4 ] Added variable main::$5 to zero page equivalence class [ main::$5 ] Added variable main::$6 to zero page equivalence class [ main::$6 ] Added variable main::bits#0 to zero page equivalence class [ main::bits#0 ] +Added variable main::$11 to zero page equivalence class [ main::$11 ] Added variable main::$12 to zero page equivalence class [ main::$12 ] Added variable main::$13 to zero page equivalence class [ main::$13 ] Added variable main::$14 to zero page equivalence class [ main::$14 ] Added variable main::$15 to zero page equivalence class [ main::$15 ] -Added variable main::$16 to zero page equivalence class [ main::$16 ] Added variable main::bits#1 to zero page equivalence class [ main::bits#1 ] +Added variable main::$20 to zero page equivalence class [ main::$20 ] +Added variable main::$21 to zero page equivalence class [ main::$21 ] Added variable main::$22 to zero page equivalence class [ main::$22 ] Added variable main::$23 to zero page equivalence class [ main::$23 ] Added variable main::$24 to zero page equivalence class [ main::$24 ] -Added variable main::$25 to zero page equivalence class [ main::$25 ] -Added variable main::$26 to zero page equivalence class [ main::$26 ] Added variable main::bits#2 to zero page equivalence class [ main::bits#2 ] +Added variable main::$29 to zero page equivalence class [ main::$29 ] +Added variable main::$30 to zero page equivalence class [ main::$30 ] +Added variable main::$31 to zero page equivalence class [ main::$31 ] Added variable main::$32 to zero page equivalence class [ main::$32 ] -Added variable main::$33 to zero page equivalence class [ main::$33 ] -Added variable main::$34 to zero page equivalence class [ main::$34 ] -Added variable main::$35 to zero page equivalence class [ main::$35 ] Added variable main::bits#3 to zero page equivalence class [ main::bits#3 ] Added variable main::bits_gen#7 to zero page equivalence class [ main::bits_gen#7 ] Complete equivalence classes @@ -3497,22 +3453,22 @@ Complete equivalence classes [ main::$5 ] [ main::$6 ] [ main::bits#0 ] +[ main::$11 ] [ main::$12 ] [ main::$13 ] [ main::$14 ] [ main::$15 ] -[ main::$16 ] [ main::bits#1 ] +[ main::$20 ] +[ main::$21 ] [ main::$22 ] [ main::$23 ] [ main::$24 ] -[ main::$25 ] -[ main::$26 ] [ main::bits#2 ] +[ main::$29 ] +[ main::$30 ] +[ main::$31 ] [ main::$32 ] -[ main::$33 ] -[ main::$34 ] -[ main::$35 ] [ main::bits#3 ] [ main::bits_gen#7 ] Allocated zp ZP_WORD:2 [ main::chargen#10 main::chargen#1 ] @@ -3530,22 +3486,22 @@ Allocated zp ZP_BYTE:16 [ main::$4 ] Allocated zp ZP_BYTE:17 [ main::$5 ] Allocated zp ZP_BYTE:18 [ main::$6 ] Allocated zp ZP_BYTE:19 [ main::bits#0 ] -Allocated zp ZP_BYTE:20 [ main::$12 ] -Allocated zp ZP_BYTE:21 [ main::$13 ] -Allocated zp ZP_BYTE:22 [ main::$14 ] -Allocated zp ZP_BYTE:23 [ main::$15 ] -Allocated zp ZP_BYTE:24 [ main::$16 ] +Allocated zp ZP_BYTE:20 [ main::$11 ] +Allocated zp ZP_BYTE:21 [ main::$12 ] +Allocated zp ZP_BYTE:22 [ main::$13 ] +Allocated zp ZP_BYTE:23 [ main::$14 ] +Allocated zp ZP_BYTE:24 [ main::$15 ] Allocated zp ZP_BYTE:25 [ main::bits#1 ] -Allocated zp ZP_BYTE:26 [ main::$22 ] -Allocated zp ZP_BYTE:27 [ main::$23 ] -Allocated zp ZP_BYTE:28 [ main::$24 ] -Allocated zp ZP_BYTE:29 [ main::$25 ] -Allocated zp ZP_BYTE:30 [ main::$26 ] +Allocated zp ZP_BYTE:26 [ main::$20 ] +Allocated zp ZP_BYTE:27 [ main::$21 ] +Allocated zp ZP_BYTE:28 [ main::$22 ] +Allocated zp ZP_BYTE:29 [ main::$23 ] +Allocated zp ZP_BYTE:30 [ main::$24 ] Allocated zp ZP_BYTE:31 [ main::bits#2 ] -Allocated zp ZP_BYTE:32 [ main::$32 ] -Allocated zp ZP_BYTE:33 [ main::$33 ] -Allocated zp ZP_BYTE:34 [ main::$34 ] -Allocated zp ZP_BYTE:35 [ main::$35 ] +Allocated zp ZP_BYTE:32 [ main::$29 ] +Allocated zp ZP_BYTE:33 [ main::$30 ] +Allocated zp ZP_BYTE:34 [ main::$31 ] +Allocated zp ZP_BYTE:35 [ main::$32 ] Allocated zp ZP_BYTE:36 [ main::bits#3 ] Allocated zp ZP_BYTE:37 [ main::bits_gen#7 ] INITIAL ASM @@ -3582,20 +3538,20 @@ main: { .label _4 = $10 .label _5 = $11 .label _6 = $12 - .label _12 = $14 - .label _13 = $15 - .label _14 = $16 - .label _15 = $17 - .label _16 = $18 - .label _22 = $1a - .label _23 = $1b - .label _24 = $1c - .label _25 = $1d - .label _26 = $1e - .label _32 = $20 - .label _33 = $21 - .label _34 = $22 - .label _35 = $23 + .label _11 = $14 + .label _12 = $15 + .label _13 = $16 + .label _14 = $17 + .label _15 = $18 + .label _20 = $1a + .label _21 = $1b + .label _22 = $1c + .label _23 = $1d + .label _24 = $1e + .label _29 = $20 + .label _30 = $21 + .label _31 = $22 + .label _32 = $23 .label chargen1 = $b .label bits = $13 .label bits_gen = 7 @@ -3674,7 +3630,7 @@ main: { lsr lsr sta _6 - //SEG25 [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx _6 lda bits_count,x sta bits @@ -3705,31 +3661,31 @@ main: { lda bits_gen_9 asl sta bits_gen - //SEG35 [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG35 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen),y and #$18 - sta _12 - //SEG36 [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + sta _11 + //SEG36 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen1),y and #$18 - sta _13 - //SEG37 [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- vbuz1=vbuz2_ror_2 - lda _13 - lsr - lsr - sta _14 - //SEG38 [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuz1=vbuz2_bor_vbuz3 + sta _12 + //SEG37 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) -- vbuz1=vbuz2_ror_2 lda _12 - ora _14 - sta _15 - //SEG39 [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- vbuz1=vbuz2_ror_1 - lda _15 lsr - sta _16 - //SEG40 [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx _16 + lsr + sta _13 + //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _11 + ora _13 + sta _14 + //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuz1=vbuz2_ror_1 + lda _14 + lsr + sta _15 + //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldx _15 lda bits_count,x sta bits_1 //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuz1_lt_vbuc1_then_la1 @@ -3752,30 +3708,30 @@ main: { lda bits_gen asl sta bits_gen_14 - //SEG48 [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG48 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen),y and #6 - sta _22 - //SEG49 [30] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- vbuz1=vbuz2_rol_1 - lda _22 + sta _20 + //SEG49 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) -- vbuz1=vbuz2_rol_1 + lda _20 asl - sta _23 - //SEG50 [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + sta _21 + //SEG50 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen1),y and #6 - sta _24 - //SEG51 [32] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- vbuz1=vbuz2_ror_1 - lda _24 + sta _22 + //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) -- vbuz1=vbuz2_ror_1 + lda _22 lsr - sta _25 - //SEG52 [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- vbuz1=vbuz2_bor_vbuz3 - lda _23 - ora _25 - sta _26 - //SEG53 [34] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx _26 + sta _23 + //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _21 + ora _23 + sta _24 + //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldx _24 lda bits_count,x sta bits_2 //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuz1_lt_vbuc1_then_la1 @@ -3798,27 +3754,27 @@ main: { lda bits_gen_13 asl sta bits_gen_16 - //SEG61 [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG61 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen),y and #1 - sta _32 - //SEG62 [40] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- vbuz1=vbuz2_rol_2 - lda _32 + sta _29 + //SEG62 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) -- vbuz1=vbuz2_rol_2 + lda _29 asl asl - sta _33 - //SEG63 [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + sta _30 + //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen1),y and #1 - sta _34 - //SEG64 [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- vbuz1=vbuz2_bor_vbuz3 - lda _33 - ora _34 - sta _35 - //SEG65 [43] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx _35 + sta _31 + //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _30 + ora _31 + sta _32 + //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldx _32 lda bits_count,x sta bits_3 //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- vbuz1_lt_vbuc1_then_la1 @@ -3917,29 +3873,29 @@ Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed by Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ main::$1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ main::$1 ] Statement [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] -Statement [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ main::$12 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ main::$12 ] -Statement [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a +Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ main::$11 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:20 [ main::$11 ] +Statement [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) always clobbers reg byte a Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a -Statement [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) always clobbers reg byte a reg byte y +Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] -Statement [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ main::$23 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ main::$23 ] -Statement [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) always clobbers reg byte a +Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ main::$21 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ main::$21 ] +Statement [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) always clobbers reg byte a Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a -Statement [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a reg byte y +Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] -Statement [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) always clobbers reg byte a reg byte y -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ main::$33 ] -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ main::$33 ] -Statement [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) always clobbers reg byte a +Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) always clobbers reg byte a reg byte y +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ main::$30 ] +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ main::$30 ] +Statement [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y Statement [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a @@ -3951,17 +3907,17 @@ Statement [7] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte/sign Statement [8] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ) always clobbers reg byte a reg byte y Statement [9] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ) always clobbers reg byte a reg byte y Statement [11] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ) always clobbers reg byte a -Statement [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) always clobbers reg byte a reg byte y -Statement [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) always clobbers reg byte a reg byte y -Statement [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) always clobbers reg byte a +Statement [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) always clobbers reg byte a reg byte y +Statement [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) always clobbers reg byte a reg byte y +Statement [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) always clobbers reg byte a Statement [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) always clobbers reg byte a -Statement [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) always clobbers reg byte a reg byte y -Statement [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) always clobbers reg byte a reg byte y -Statement [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) always clobbers reg byte a +Statement [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) always clobbers reg byte a reg byte y +Statement [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) always clobbers reg byte a reg byte y +Statement [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) always clobbers reg byte a Statement [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) always clobbers reg byte a -Statement [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a reg byte y -Statement [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) always clobbers reg byte a reg byte y -Statement [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) always clobbers reg byte a +Statement [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) always clobbers reg byte a reg byte y +Statement [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) always clobbers reg byte a reg byte y +Statement [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) always clobbers reg byte a Statement [47] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ) always clobbers reg byte a Statement [48] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:2 [ main::chargen#10 main::charset4#10 ] ) always clobbers reg byte y Statement [50] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte/signed byte/word/signed word) 2 [ main::chargen#1 main::charset4#1 ] ( main:2 [ main::chargen#1 main::charset4#1 ] ) always clobbers reg byte a @@ -3983,27 +3939,27 @@ Potential registers zp ZP_BYTE:16 [ main::$4 ] : zp ZP_BYTE:16 , reg byte a , re Potential registers zp ZP_BYTE:17 [ main::$5 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:18 [ main::$6 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:19 [ main::bits#0 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ main::$12 ] : zp ZP_BYTE:20 , reg byte x , -Potential registers zp ZP_BYTE:21 [ main::$13 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:22 [ main::$14 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:23 [ main::$15 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ main::$16 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ main::$11 ] : zp ZP_BYTE:20 , reg byte x , +Potential registers zp ZP_BYTE:21 [ main::$12 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ main::$13 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ main::$14 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ main::$15 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:25 [ main::bits#1 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ main::$22 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ main::$23 ] : zp ZP_BYTE:27 , reg byte x , -Potential registers zp ZP_BYTE:28 [ main::$24 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ main::$25 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ main::$26 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ main::$20 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ main::$21 ] : zp ZP_BYTE:27 , reg byte x , +Potential registers zp ZP_BYTE:28 [ main::$22 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:29 [ main::$23 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:30 [ main::$24 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:31 [ main::bits#2 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ main::$32 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ main::$33 ] : zp ZP_BYTE:33 , reg byte x , -Potential registers zp ZP_BYTE:34 [ main::$34 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ main::$35 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:32 [ main::$29 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:33 [ main::$30 ] : zp ZP_BYTE:33 , reg byte x , +Potential registers zp ZP_BYTE:34 [ main::$31 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:35 [ main::$32 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:36 [ main::bits#3 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:37 [ main::bits_gen#7 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 59.71: zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] 59.12: zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] 59.12: zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] 38.5: zp ZP_BYTE:10 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:14 [ main::$2 ] 22: zp ZP_BYTE:15 [ main::$3 ] 22: zp ZP_BYTE:16 [ main::$4 ] 22: zp ZP_BYTE:17 [ main::$5 ] 22: zp ZP_BYTE:18 [ main::$6 ] 22: zp ZP_BYTE:19 [ main::bits#0 ] 22: zp ZP_BYTE:21 [ main::$13 ] 22: zp ZP_BYTE:22 [ main::$14 ] 22: zp ZP_BYTE:23 [ main::$15 ] 22: zp ZP_BYTE:24 [ main::$16 ] 22: zp ZP_BYTE:25 [ main::bits#1 ] 22: zp ZP_BYTE:26 [ main::$22 ] 22: zp ZP_BYTE:28 [ main::$24 ] 22: zp ZP_BYTE:29 [ main::$25 ] 22: zp ZP_BYTE:30 [ main::$26 ] 22: zp ZP_BYTE:31 [ main::bits#2 ] 22: zp ZP_BYTE:32 [ main::$32 ] 22: zp ZP_BYTE:34 [ main::$34 ] 22: zp ZP_BYTE:35 [ main::$35 ] 22: zp ZP_BYTE:36 [ main::bits#3 ] 22: zp ZP_BYTE:37 [ main::bits_gen#7 ] 18.25: zp ZP_WORD:2 [ main::chargen#10 main::chargen#1 ] 11: zp ZP_BYTE:6 [ main::bits_gen#9 ] 11: zp ZP_BYTE:33 [ main::$33 ] 8.1: zp ZP_WORD:4 [ main::charset4#10 main::charset4#1 ] 7.33: zp ZP_BYTE:13 [ main::$1 ] 7.33: zp ZP_BYTE:20 [ main::$12 ] 7.33: zp ZP_BYTE:27 [ main::$23 ] 1.62: zp ZP_WORD:11 [ main::chargen1#0 ] +Uplift Scope [main] 59.71: zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] 59.12: zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] 59.12: zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] 38.5: zp ZP_BYTE:10 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:14 [ main::$2 ] 22: zp ZP_BYTE:15 [ main::$3 ] 22: zp ZP_BYTE:16 [ main::$4 ] 22: zp ZP_BYTE:17 [ main::$5 ] 22: zp ZP_BYTE:18 [ main::$6 ] 22: zp ZP_BYTE:19 [ main::bits#0 ] 22: zp ZP_BYTE:21 [ main::$12 ] 22: zp ZP_BYTE:22 [ main::$13 ] 22: zp ZP_BYTE:23 [ main::$14 ] 22: zp ZP_BYTE:24 [ main::$15 ] 22: zp ZP_BYTE:25 [ main::bits#1 ] 22: zp ZP_BYTE:26 [ main::$20 ] 22: zp ZP_BYTE:28 [ main::$22 ] 22: zp ZP_BYTE:29 [ main::$23 ] 22: zp ZP_BYTE:30 [ main::$24 ] 22: zp ZP_BYTE:31 [ main::bits#2 ] 22: zp ZP_BYTE:32 [ main::$29 ] 22: zp ZP_BYTE:34 [ main::$31 ] 22: zp ZP_BYTE:35 [ main::$32 ] 22: zp ZP_BYTE:36 [ main::bits#3 ] 22: zp ZP_BYTE:37 [ main::bits_gen#7 ] 18.25: zp ZP_WORD:2 [ main::chargen#10 main::chargen#1 ] 11: zp ZP_BYTE:6 [ main::bits_gen#9 ] 11: zp ZP_BYTE:33 [ main::$30 ] 8.1: zp ZP_WORD:4 [ main::charset4#10 main::charset4#1 ] 7.33: zp ZP_BYTE:13 [ main::$1 ] 7.33: zp ZP_BYTE:20 [ main::$11 ] 7.33: zp ZP_BYTE:27 [ main::$21 ] 1.62: zp ZP_WORD:11 [ main::chargen1#0 ] Uplift Scope [] Uplifting [] best 5153 combination @@ -4027,54 +3983,54 @@ Attempting to uplift remaining variables inzp ZP_BYTE:18 [ main::$6 ] Uplifting [main] best 4773 combination reg byte a [ main::$6 ] Attempting to uplift remaining variables inzp ZP_BYTE:19 [ main::bits#0 ] Uplifting [main] best 4713 combination reg byte a [ main::bits#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::$13 ] -Uplifting [main] best 4653 combination reg byte a [ main::$13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:22 [ main::$14 ] -Uplifting [main] best 4593 combination reg byte a [ main::$14 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ main::$15 ] -Uplifting [main] best 4533 combination reg byte a [ main::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:24 [ main::$16 ] -Uplifting [main] best 4493 combination reg byte a [ main::$16 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ main::$12 ] +Uplifting [main] best 4653 combination reg byte a [ main::$12 ] +Attempting to uplift remaining variables inzp ZP_BYTE:22 [ main::$13 ] +Uplifting [main] best 4593 combination reg byte a [ main::$13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:23 [ main::$14 ] +Uplifting [main] best 4533 combination reg byte a [ main::$14 ] +Attempting to uplift remaining variables inzp ZP_BYTE:24 [ main::$15 ] +Uplifting [main] best 4493 combination reg byte a [ main::$15 ] Attempting to uplift remaining variables inzp ZP_BYTE:25 [ main::bits#1 ] Uplifting [main] best 4433 combination reg byte a [ main::bits#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ main::$22 ] -Uplifting [main] best 4373 combination reg byte a [ main::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:28 [ main::$24 ] -Uplifting [main] best 4313 combination reg byte a [ main::$24 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ main::$25 ] -Uplifting [main] best 4253 combination reg byte a [ main::$25 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ main::$26 ] -Uplifting [main] best 4213 combination reg byte a [ main::$26 ] +Attempting to uplift remaining variables inzp ZP_BYTE:26 [ main::$20 ] +Uplifting [main] best 4373 combination reg byte a [ main::$20 ] +Attempting to uplift remaining variables inzp ZP_BYTE:28 [ main::$22 ] +Uplifting [main] best 4313 combination reg byte a [ main::$22 ] +Attempting to uplift remaining variables inzp ZP_BYTE:29 [ main::$23 ] +Uplifting [main] best 4253 combination reg byte a [ main::$23 ] +Attempting to uplift remaining variables inzp ZP_BYTE:30 [ main::$24 ] +Uplifting [main] best 4213 combination reg byte a [ main::$24 ] Attempting to uplift remaining variables inzp ZP_BYTE:31 [ main::bits#2 ] Uplifting [main] best 4153 combination reg byte a [ main::bits#2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ main::$32 ] -Uplifting [main] best 4093 combination reg byte a [ main::$32 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ main::$34 ] -Uplifting [main] best 4033 combination reg byte a [ main::$34 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ main::$35 ] -Uplifting [main] best 3993 combination reg byte a [ main::$35 ] +Attempting to uplift remaining variables inzp ZP_BYTE:32 [ main::$29 ] +Uplifting [main] best 4093 combination reg byte a [ main::$29 ] +Attempting to uplift remaining variables inzp ZP_BYTE:34 [ main::$31 ] +Uplifting [main] best 4033 combination reg byte a [ main::$31 ] +Attempting to uplift remaining variables inzp ZP_BYTE:35 [ main::$32 ] +Uplifting [main] best 3993 combination reg byte a [ main::$32 ] Attempting to uplift remaining variables inzp ZP_BYTE:36 [ main::bits#3 ] Uplifting [main] best 3933 combination reg byte a [ main::bits#3 ] Attempting to uplift remaining variables inzp ZP_BYTE:37 [ main::bits_gen#7 ] Uplifting [main] best 3873 combination reg byte a [ main::bits_gen#7 ] Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::bits_gen#9 ] Uplifting [main] best 3783 combination reg byte a [ main::bits_gen#9 ] -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ main::$33 ] -Uplifting [main] best 3783 combination zp ZP_BYTE:33 [ main::$33 ] +Attempting to uplift remaining variables inzp ZP_BYTE:33 [ main::$30 ] +Uplifting [main] best 3783 combination zp ZP_BYTE:33 [ main::$30 ] Attempting to uplift remaining variables inzp ZP_BYTE:13 [ main::$1 ] Uplifting [main] best 3783 combination zp ZP_BYTE:13 [ main::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:20 [ main::$12 ] -Uplifting [main] best 3783 combination zp ZP_BYTE:20 [ main::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ main::$23 ] -Uplifting [main] best 3783 combination zp ZP_BYTE:27 [ main::$23 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ main::$11 ] +Uplifting [main] best 3783 combination zp ZP_BYTE:20 [ main::$11 ] +Attempting to uplift remaining variables inzp ZP_BYTE:27 [ main::$21 ] +Uplifting [main] best 3783 combination zp ZP_BYTE:27 [ main::$21 ] Coalescing zero page register [ zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 ] ] with [ zp ZP_BYTE:8 [ main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] ] Coalescing zero page register [ zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 ] ] with [ zp ZP_BYTE:9 [ main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] ] Coalescing zero page register [ zp ZP_BYTE:7 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 ] ] with [ zp ZP_BYTE:13 [ main::$1 ] ] -Coalescing zero page register [ zp ZP_BYTE:20 [ main::$12 ] ] with [ zp ZP_BYTE:27 [ main::$23 ] ] -Coalescing zero page register [ zp ZP_BYTE:20 [ main::$12 main::$23 ] ] with [ zp ZP_BYTE:33 [ main::$33 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ main::$11 ] ] with [ zp ZP_BYTE:27 [ main::$21 ] ] +Coalescing zero page register [ zp ZP_BYTE:20 [ main::$11 main::$21 ] ] with [ zp ZP_BYTE:33 [ main::$30 ] ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ main::bits_gen#11 main::bits_gen#1 main::bits_gen#4 main::bits_gen#13 main::bits_gen#14 main::bits_gen#6 main::bits_gen#15 main::bits_gen#8 main::bits_gen#16 main::$1 ] Allocated (was zp ZP_WORD:11) zp ZP_WORD:7 [ main::chargen1#0 ] -Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:9 [ main::$12 main::$23 main::$33 ] +Allocated (was zp ZP_BYTE:20) zp ZP_BYTE:9 [ main::$11 main::$21 main::$30 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -4105,9 +4061,9 @@ bend: //SEG8 main main: { .label _1 = 6 - .label _12 = 9 - .label _23 = 9 - .label _33 = 9 + .label _11 = 9 + .label _21 = 9 + .label _30 = 9 .label chargen1 = 7 .label bits_gen = 6 .label charset4 = 4 @@ -4164,7 +4120,7 @@ main: { //SEG24 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG25 [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4190,23 +4146,23 @@ main: { //SEG34 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuz1=vbuaa_rol_1 asl sta bits_gen - //SEG35 [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG35 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen),y and #$18 - sta _12 - //SEG36 [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + sta _11 + //SEG36 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen1),y and #$18 - //SEG37 [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- vbuaa=vbuaa_ror_2 + //SEG37 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG38 [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuaa=vbuz1_bor_vbuaa - ora _12 - //SEG39 [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- vbuaa=vbuaa_ror_1 + //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _11 + //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuaa=vbuaa_ror_1 lsr - //SEG40 [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4226,22 +4182,22 @@ main: { b3: //SEG47 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuz1=vbuz1_rol_1 asl bits_gen - //SEG48 [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG48 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen),y and #6 - //SEG49 [30] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- vbuz1=vbuaa_rol_1 + //SEG49 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) -- vbuz1=vbuaa_rol_1 asl - sta _23 - //SEG50 [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + sta _21 + //SEG50 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen1),y and #6 - //SEG51 [32] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- vbuaa=vbuaa_ror_1 + //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) -- vbuaa=vbuaa_ror_1 lsr - //SEG52 [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- vbuaa=vbuz1_bor_vbuaa - ora _23 - //SEG53 [34] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _21 + //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4261,21 +4217,21 @@ main: { b4: //SEG60 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- vbuz1=vbuz1_rol_1 asl bits_gen - //SEG61 [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG61 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen),y and #1 - //SEG62 [40] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- vbuz1=vbuaa_rol_2 + //SEG62 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) -- vbuz1=vbuaa_rol_2 asl asl - sta _33 - //SEG63 [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + sta _30 + //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen1),y and #1 - //SEG64 [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- vbuaa=vbuz1_bor_vbuaa - ora _33 - //SEG65 [43] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _30 + //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4439,22 +4395,22 @@ FINAL SYMBOL TABLE (const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (void()) main() (byte~) main::$1 $1 zp ZP_BYTE:6 7.333333333333333 -(byte~) main::$12 $12 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$11 $11 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$12 reg byte a 22.0 (byte~) main::$13 reg byte a 22.0 (byte~) main::$14 reg byte a 22.0 (byte~) main::$15 reg byte a 22.0 -(byte~) main::$16 reg byte a 22.0 (byte~) main::$2 reg byte a 22.0 +(byte~) main::$20 reg byte a 22.0 +(byte~) main::$21 $21 zp ZP_BYTE:9 7.333333333333333 (byte~) main::$22 reg byte a 22.0 -(byte~) main::$23 $23 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$23 reg byte a 22.0 (byte~) main::$24 reg byte a 22.0 -(byte~) main::$25 reg byte a 22.0 -(byte~) main::$26 reg byte a 22.0 +(byte~) main::$29 reg byte a 22.0 (byte~) main::$3 reg byte a 22.0 +(byte~) main::$30 $30 zp ZP_BYTE:9 11.0 +(byte~) main::$31 reg byte a 22.0 (byte~) main::$32 reg byte a 22.0 -(byte~) main::$33 $33 zp ZP_BYTE:9 11.0 -(byte~) main::$34 reg byte a 22.0 -(byte~) main::$35 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 (byte~) main::$5 reg byte a 22.0 (byte~) main::$6 reg byte a 22.0 @@ -4512,20 +4468,20 @@ reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte a [ main::$6 ] reg byte a [ main::bits#0 ] -zp ZP_BYTE:9 [ main::$12 main::$23 main::$33 ] +zp ZP_BYTE:9 [ main::$11 main::$21 main::$30 ] +reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::$15 ] -reg byte a [ main::$16 ] reg byte a [ main::bits#1 ] +reg byte a [ main::$20 ] reg byte a [ main::$22 ] +reg byte a [ main::$23 ] reg byte a [ main::$24 ] -reg byte a [ main::$25 ] -reg byte a [ main::$26 ] reg byte a [ main::bits#2 ] +reg byte a [ main::$29 ] +reg byte a [ main::$31 ] reg byte a [ main::$32 ] -reg byte a [ main::$34 ] -reg byte a [ main::$35 ] reg byte a [ main::bits#3 ] reg byte a [ main::bits_gen#7 ] @@ -4551,9 +4507,9 @@ FINAL CODE //SEG8 main main: { .label _1 = 6 - .label _12 = 9 - .label _23 = 9 - .label _33 = 9 + .label _11 = 9 + .label _21 = 9 + .label _30 = 9 .label chargen1 = 7 .label bits_gen = 6 .label charset4 = 4 @@ -4605,7 +4561,7 @@ main: { //SEG24 [13] (byte~) main::$6 ← (byte~) main::$5 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ) -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG25 [14] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG25 [14] (byte) main::bits#0 ← *((const byte[]) bits_count#0 + (byte~) main::$6) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG26 [15] if((byte) main::bits#0<(byte/signed byte/word/signed word) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4626,22 +4582,22 @@ main: { //SEG34 [18] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuz1=vbuaa_rol_1 asl sta bits_gen - //SEG35 [19] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 + //SEG35 [19] (byte~) main::$11 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1 ldy #0 lda (chargen),y and #$18 - sta _12 - //SEG36 [20] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + sta _11 + //SEG36 [20] (byte~) main::$12 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$12 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 lda (chargen1),y and #$18 - //SEG37 [21] (byte~) main::$14 ← (byte~) main::$13 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ) -- vbuaa=vbuaa_ror_2 + //SEG37 [21] (byte~) main::$13 ← (byte~) main::$12 >> (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$11 main::$13 ] ) -- vbuaa=vbuaa_ror_2 lsr lsr - //SEG38 [22] (byte~) main::$15 ← (byte~) main::$12 | (byte~) main::$14 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuaa=vbuz1_bor_vbuaa - ora _12 - //SEG39 [23] (byte~) main::$16 ← (byte~) main::$15 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ) -- vbuaa=vbuaa_ror_1 + //SEG38 [22] (byte~) main::$14 ← (byte~) main::$11 | (byte~) main::$13 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _11 + //SEG39 [23] (byte~) main::$15 ← (byte~) main::$14 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ) -- vbuaa=vbuaa_ror_1 lsr - //SEG40 [24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$16 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG40 [24] (byte) main::bits#1 ← *((const byte[]) bits_count#0 + (byte~) main::$15) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG41 [25] if((byte) main::bits#1<(byte/signed byte/word/signed word) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4656,21 +4612,21 @@ main: { b3: //SEG47 [28] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuz1=vbuz1_rol_1 asl bits_gen - //SEG48 [29] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG48 [29] (byte~) main::$20 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$20 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen),y and #6 - //SEG49 [30] (byte~) main::$23 ← (byte~) main::$22 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ) -- vbuz1=vbuaa_rol_1 + //SEG49 [30] (byte~) main::$21 ← (byte~) main::$20 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 ] ) -- vbuz1=vbuaa_rol_1 asl - sta _23 - //SEG50 [31] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + sta _21 + //SEG50 [31] (byte~) main::$22 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$22 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 lda (chargen1),y and #6 - //SEG51 [32] (byte~) main::$25 ← (byte~) main::$24 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ) -- vbuaa=vbuaa_ror_1 + //SEG51 [32] (byte~) main::$23 ← (byte~) main::$22 >> (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$21 main::$23 ] ) -- vbuaa=vbuaa_ror_1 lsr - //SEG52 [33] (byte~) main::$26 ← (byte~) main::$23 | (byte~) main::$25 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ) -- vbuaa=vbuz1_bor_vbuaa - ora _23 - //SEG53 [34] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$26 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG52 [33] (byte~) main::$24 ← (byte~) main::$21 | (byte~) main::$23 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$24 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _21 + //SEG53 [34] (byte) main::bits#2 ← *((const byte[]) bits_count#0 + (byte~) main::$24) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG54 [35] if((byte) main::bits#2<(byte/signed byte/word/signed word) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ) -- vbuaa_lt_vbuc1_then_la1 @@ -4685,20 +4641,20 @@ main: { b4: //SEG60 [38] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ) -- vbuz1=vbuz1_rol_1 asl bits_gen - //SEG61 [39] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + //SEG61 [39] (byte~) main::$29 ← *((byte*) main::chargen#10) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$29 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 ldy #0 lda (chargen),y and #1 - //SEG62 [40] (byte~) main::$33 ← (byte~) main::$32 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ) -- vbuz1=vbuaa_rol_2 + //SEG62 [40] (byte~) main::$30 ← (byte~) main::$29 << (byte/signed byte/word/signed word) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ( main:2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$30 ] ) -- vbuz1=vbuaa_rol_2 asl asl - sta _33 - //SEG63 [41] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 + sta _30 + //SEG63 [41] (byte~) main::$31 ← *((byte*) main::chargen1#0) & (byte/signed byte/word/signed word) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$30 main::$31 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1 lda (chargen1),y and #1 - //SEG64 [42] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ) -- vbuaa=vbuz1_bor_vbuaa - ora _33 - //SEG65 [43] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$35 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG64 [42] (byte~) main::$32 ← (byte~) main::$30 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$32 ] ) -- vbuaa=vbuz1_bor_vbuaa + ora _30 + //SEG65 [43] (byte) main::bits#3 ← *((const byte[]) bits_count#0 + (byte~) main::$32) [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda bits_count,x //SEG66 [44] if((byte) main::bits#3<(byte/signed byte/word/signed word) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:2 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ) -- vbuaa_lt_vbuc1_then_la1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym index d512b2d22..5d1940f81 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.sym @@ -15,22 +15,22 @@ (const byte[]) bits_count#0 bits_count = { (byte/signed byte/word/signed word) 0, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 4 } (void()) main() (byte~) main::$1 $1 zp ZP_BYTE:6 7.333333333333333 -(byte~) main::$12 $12 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$11 $11 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$12 reg byte a 22.0 (byte~) main::$13 reg byte a 22.0 (byte~) main::$14 reg byte a 22.0 (byte~) main::$15 reg byte a 22.0 -(byte~) main::$16 reg byte a 22.0 (byte~) main::$2 reg byte a 22.0 +(byte~) main::$20 reg byte a 22.0 +(byte~) main::$21 $21 zp ZP_BYTE:9 7.333333333333333 (byte~) main::$22 reg byte a 22.0 -(byte~) main::$23 $23 zp ZP_BYTE:9 7.333333333333333 +(byte~) main::$23 reg byte a 22.0 (byte~) main::$24 reg byte a 22.0 -(byte~) main::$25 reg byte a 22.0 -(byte~) main::$26 reg byte a 22.0 +(byte~) main::$29 reg byte a 22.0 (byte~) main::$3 reg byte a 22.0 +(byte~) main::$30 $30 zp ZP_BYTE:9 11.0 +(byte~) main::$31 reg byte a 22.0 (byte~) main::$32 reg byte a 22.0 -(byte~) main::$33 $33 zp ZP_BYTE:9 11.0 -(byte~) main::$34 reg byte a 22.0 -(byte~) main::$35 reg byte a 22.0 (byte~) main::$4 reg byte a 22.0 (byte~) main::$5 reg byte a 22.0 (byte~) main::$6 reg byte a 22.0 @@ -88,19 +88,19 @@ reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte a [ main::$6 ] reg byte a [ main::bits#0 ] -zp ZP_BYTE:9 [ main::$12 main::$23 main::$33 ] +zp ZP_BYTE:9 [ main::$11 main::$21 main::$30 ] +reg byte a [ main::$12 ] reg byte a [ main::$13 ] reg byte a [ main::$14 ] reg byte a [ main::$15 ] -reg byte a [ main::$16 ] reg byte a [ main::bits#1 ] +reg byte a [ main::$20 ] reg byte a [ main::$22 ] +reg byte a [ main::$23 ] reg byte a [ main::$24 ] -reg byte a [ main::$25 ] -reg byte a [ main::$26 ] reg byte a [ main::bits#2 ] +reg byte a [ main::$29 ] +reg byte a [ main::$31 ] reg byte a [ main::$32 ] -reg byte a [ main::$34 ] -reg byte a [ main::$35 ] reg byte a [ main::bits#3 ] reg byte a [ main::bits_gen#7 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.asm b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.asm new file mode 100644 index 000000000..74fa8d7ce --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.asm @@ -0,0 +1,17 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const SCREEN = $400 + jsr main +main: { + ldx #0 + b1: + txa + sta SCREEN,x + txa + sta SCREEN+$50,x + inx + cpx #$28 + bne b1 + rts +} diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.cfg new file mode 100644 index 000000000..2d06f000d --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.cfg @@ -0,0 +1,22 @@ +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::a#0 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::a#0 ] ( main:2 [ main::a#0 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) + [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@1 + [10] return [ ] ( main:2 [ ] ) + to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.log b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.log new file mode 100644 index 000000000..38ca4ca21 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.log @@ -0,0 +1,711 @@ +const byte* SCREEN = $400; + +void main() { + byte a; + for( byte i : 0..39) { + SCREEN[i] = a = i; + (SCREEN+80)[i] = a; + } +} +PROGRAM + (byte*) SCREEN ← (word/signed word) 1024 +proc (void()) main() + (byte) main::i ← (byte/signed byte/word/signed word) 0 +main::@1: + (byte) main::a ← (byte) main::i + *((byte*) SCREEN + (byte) main::i) ← (byte) main::a + (byte*~) main::$0 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i) ← (byte) main::a + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 +main::@return: + return +endproc // main() + call main + +SYMBOLS +(byte*) SCREEN +(void()) main() +(byte*~) main::$0 +(boolean~) main::$1 +(label) main::@1 +(label) main::@return +(byte) main::a +(byte) main::i + +Promoting word/signed word to byte* in SCREEN ← ((byte*)) 1024 +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a ← (byte) main::i + *((byte*) SCREEN + (byte) main::i) ← (byte) main::a + (byte*~) main::$0 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i) ← (byte) main::a + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@2 +main::@2: scope:[main] from main::@1 + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +Removing empty block main::@2 +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a ← (byte) main::i + *((byte*) SCREEN + (byte) main::i) ← (byte) main::a + (byte*~) main::$0 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i) ← (byte) main::a + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +PROCEDURE MODIFY VARIABLE ANALYSIS + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL +@begin: scope:[] from + (byte*) SCREEN ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a ← (byte) main::i + *((byte*) SCREEN + (byte) main::i) ← (byte) main::a + (byte*~) main::$0 ← (byte*) SCREEN + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i) ← (byte) main::a + (byte) main::i ← ++ (byte) main::i + (boolean~) main::$1 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +Completing Phi functions... +CONTROL FLOW GRAPH SSA +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + (byte) main::a#0 ← (byte) main::i#2 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::a#0 + (byte*~) main::$0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i#2) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::i#2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + (byte) main::a#0 ← (byte) main::i#2 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::a#0 + (byte*~) main::$0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i#2) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::i#2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +INITIAL SSA SYMBOL TABLE +(label) @1 +(label) @2 +(label) @begin +(label) @end +(byte*) SCREEN +(byte*) SCREEN#0 +(void()) main() +(byte*~) main::$0 +(boolean~) main::$1 +(label) main::@1 +(label) main::@return +(byte) main::a +(byte) main::a#0 +(byte) main::i +(byte) main::i#0 +(byte) main::i#1 +(byte) main::i#2 + +Culled Empty Block (label) @2 +Succesful SSA optimization Pass2CullEmptyBlocks +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + (byte) main::a#0 ← (byte) main::i#2 + *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::a#0 + (byte*~) main::$0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::i#2) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::i#2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Alias (byte) main::a#0 = (byte) main::i#2 +Succesful SSA optimization Pass2AliasElimination +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a#0 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 + (byte*~) main::$0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::a#0) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::a#0 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$1) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 +Succesful SSA optimization Pass2ConditionalJumpSimplification +CONTROL FLOW GRAPH +@begin: scope:[] from + (byte*) SCREEN#0 ← ((byte*)) (word/signed word) 1024 + to:@1 +main: scope:[main] from @1 + (byte) main::i#0 ← (byte/signed byte/word/signed word) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a#0 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) + *((byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 + (byte*~) main::$0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::a#0) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::a#0 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte) main::i#0 = 0 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a#0 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) + *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 + (byte*~) main::$0 ← (const byte*) SCREEN#0 + (byte/signed byte/word/signed word) 80 + *((byte*~) main::$0 + (byte) main::a#0) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::a#0 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Constant (const byte*) main::$0 = SCREEN#0+80 +Succesful SSA optimization Pass2ConstantIdentification +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a#0 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) + *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 + *((const byte*) main::$0 + (byte) main::a#0) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::a#0 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0 +Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0 +Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0 +Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0 +Inlining constant with var siblings (const byte) main::i#0 +Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 +Succesful SSA optimization Pass2ConstantInlining +CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte) main::a#0 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) + *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::a#0 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::a +(byte) main::a#0 +(byte) main::i +(byte) main::i#1 + +Block Sequence Planned @begin @1 @end main main::@1 main::@return +Added new block during phi lifting main::@3(between main::@1 and main::@1) +Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@3 +CONTROL FLOW GRAPH - PHI LIFTED +@begin: scope:[] from + to:@1 +@1: scope:[] from @begin + call main param-assignment + to:@end +@end: scope:[] from @1 +main: scope:[main] from @1 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte) main::a#0 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::a#1 ) + *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 + (byte) main::i#1 ← ++ (byte) main::a#0 + if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@3 + to:main::@return +main::@return: scope:[main] from main::@1 + return + to:@return +main::@3: scope:[main] from main::@1 + (byte~) main::a#1 ← (byte) main::i#1 + to:main::@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 +CALL GRAPH +Calls in [] to main:2 + +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - LIVE RANGES FOUND +@begin: scope:[] from + [0] phi() [ ] + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] + [2] call main param-assignment [ ] + to:@end +@end: scope:[] from @1 + [3] phi() [ ] +main: scope:[main] from @1 + [4] phi() [ ] + to:main::@1 +main::@1: scope:[main] from main main::@3 + [5] (byte) main::a#0 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::a#1 ) [ main::a#0 ] + [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] + [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@3 [ main::i#1 ] + to:main::@return +main::@return: scope:[main] from main::@1 + [10] return [ ] + to:@return +main::@3: scope:[main] from main::@1 + [11] (byte~) main::a#1 ← (byte) main::i#1 [ main::a#1 ] + to:main::@1 + +Created 1 initial phi equivalence classes +Coalesced [11] main::a#1 ← main::i#1 +Coalesced down to 1 phi equivalence classes +Culled Empty Block (label) main::@3 +Block Sequence Planned @begin @1 @end main main::@1 main::@return +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 +Propagating live ranges... +Propagating live ranges... +CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES +@begin: scope:[] from + [0] phi() [ ] + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] + [2] call main param-assignment [ ] + to:@end +@end: scope:[] from @1 + [3] phi() [ ] +main: scope:[main] from @1 + [4] phi() [ ] + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::a#0 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::a#0 ] + [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] + [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] + to:main::@return +main::@return: scope:[main] from main::@1 + [10] return [ ] + to:@return + +CONTROL FLOW GRAPH - PHI MEM COALESCED +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main param-assignment [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (byte) main::a#0 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::a#0 ] ( main:2 [ main::a#0 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) + [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@1 + [10] return [ ] ( main:2 [ ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@1 dominated by @1 @begin +@end dominated by @1 @begin @end +main dominated by @1 @begin main +main::@1 dominated by @1 @begin main::@1 main +main::@return dominated by main::@return @1 @begin main::@1 main + +Found back edge: Loop head: main::@1 tails: main::@1 blocks: null +Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 +NATURAL LOOPS +Loop head: main::@1 tails: main::@1 blocks: main::@1 + +Found 0 loops in scope [] +Found 1 loops in scope [main] + Loop head: main::@1 tails: main::@1 blocks: main::@1 +NATURAL LOOPS WITH DEPTH +Loop head: main::@1 tails: main::@1 blocks: main::@1 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(byte*) SCREEN +(void()) main() +(byte) main::a +(byte) main::a#0 22.0 +(byte) main::i +(byte) main::i#1 16.5 + +Initial phi equivalence classes +[ main::a#0 main::i#1 ] +Complete equivalence classes +[ main::a#0 main::i#1 ] +Allocated zp ZP_BYTE:2 [ main::a#0 main::i#1 ] +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SCREEN = $400 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label a = 2 + .label i = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta a + jmp b1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG13 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG14 main::@1 + b1: + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 + ldx a + txa + sta SCREEN,x + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 + ldx a + txa + sta SCREEN+$50,x + //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 + inc i + //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda i + cmp #$28 + bne b1_from_b1 + jmp breturn + //SEG19 main::@return + breturn: + //SEG20 [10] return [ ] ( main:2 [ ] ) + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Potential registers zp ZP_BYTE:2 [ main::a#0 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::a#0 main::i#1 ] +Uplift Scope [] + +Uplifting [main] best 333 combination reg byte x [ main::a#0 main::i#1 ] +Uplifting [] best 333 combination + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SCREEN = $400 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + jmp b1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG13 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG14 main::@1 + b1: + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + txa + sta SCREEN,x + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + txa + sta SCREEN+$50,x + //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$28 + bne b1_from_b1 + jmp breturn + //SEG19 main::@return + breturn: + //SEG20 [10] return [ ] ( main:2 [ ] ) + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b1_from_b1 with b1 +Removing instruction bbegin: +Removing instruction b1_from_bbegin: +Removing instruction main_from_b1: +Removing instruction bend_from_b1: +Removing instruction b1_from_b1: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b1: +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing instruction jmp b1 +Succesful ASM optimization Pass5NextJumpElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::a +(byte) main::a#0 reg byte x 22.0 +(byte) main::i +(byte) main::i#1 reg byte x 16.5 + +reg byte x [ main::a#0 main::i#1 ] + +FINAL CODE +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const SCREEN = $400 +//SEG2 @begin +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 @1 +//SEG5 [2] call main param-assignment [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main +main: { + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi (byte) main::a#0 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 + ldx #0 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi (byte) main::a#0 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 main::@1 + b1: + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + txa + sta SCREEN,x + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 80 + (byte) main::a#0) ← (byte) main::a#0 [ main::a#0 ] ( main:2 [ main::a#0 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + txa + sta SCREEN+$50,x + //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::a#0 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #$28 + bne b1 + //SEG19 main::@return + //SEG20 [10] return [ ] ( main:2 [ ] ) + rts +} + diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.sym b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.sym new file mode 100644 index 000000000..5b265bfbe --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-assignment.sym @@ -0,0 +1,14 @@ +(label) @1 +(label) @begin +(label) @end +(byte*) SCREEN +(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 +(void()) main() +(label) main::@1 +(label) main::@return +(byte) main::a +(byte) main::a#0 reg byte x 22.0 +(byte) main::i +(byte) main::i#1 reg byte x 16.5 + +reg byte x [ main::a#0 main::i#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.asm b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.asm index 71ad62292..015fb68fd 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.asm @@ -6,26 +6,26 @@ main: { .label w = 3 .label sc = 3 - .label l = 2 - ldx #0 + .label h = 2 + lda #0 + sta h b1: - lda #4 - sta l + ldx #4 b2: - lda his,x + ldy h + lda his,y sta w+1 - lda l - sta w + stx w ldy #0 lda #'*' sta (sc),y - inc l - lda l - cmp #8 - bne b2 inx - cpx #2 + cpx #8 + bne b2 + inc h + lda h + cmp #3 bne b1 rts - his: .byte >SCREEN, >SCREEN+$100 + his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.cfg index d6f128d42..3b505670f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.cfg @@ -15,17 +15,16 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [6] (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::l#1 ) [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) - [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] ( main:2 [ main::h#4 main::l#2 main::$3 ] ) - [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) - [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) - [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) - [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) - [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) + [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) + [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) + [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) + [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) + [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) to:main::@3 main::@3: scope:[main] from main::@2 - [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) - [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) + [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) + [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) to:main::@return main::@return: scope:[main] from main::@3 - [15] return [ ] ( main:2 [ ] ) + [14] return [ ] ( main:2 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.log b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.log index dd4ca3536..740d65cc5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.log @@ -1,8 +1,8 @@ const byte* SCREEN = $400; void main() { - byte[] his = { >SCREEN, >SCREEN+$100 }; - for( byte h: 0..1) { + byte[] his = { >SCREEN, >SCREEN+$100, >SCREEN+$200 }; + for( byte h: 0..2) { for (byte l: 4..7) { word w = { his[h], l }; byte* sc = (byte*)w; @@ -16,22 +16,23 @@ proc (void()) main() (byte~) main::$0 ← > (byte*) SCREEN (byte*~) main::$1 ← (byte*) SCREEN + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h ← (byte/signed byte/word/signed word) 0 main::@1: (byte) main::l ← (byte/signed byte/word/signed word) 4 main::@2: - (byte~) main::$3 ← (byte[]) main::his *idx (byte) main::h - (word) main::w ← { (byte~) main::$3, (byte) main::l } - (byte*~) main::$4 ← ((byte*)) (word) main::w - (byte*) main::sc ← (byte*~) main::$4 + (word) main::w ← { *((byte[]) main::his + (byte) main::h), (byte) main::l } + (byte*~) main::$5 ← ((byte*)) (word) main::w + (byte*) main::sc ← (byte*~) main::$5 *((byte*) main::sc) ← (byte) '*' (byte) main::l ← ++ (byte) main::l - (boolean~) main::$5 ← (byte) main::l != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 (byte) main::h ← ++ (byte) main::h - (boolean~) main::$6 ← (byte) main::h != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 main::@return: return endproc // main() @@ -43,10 +44,11 @@ SYMBOLS (byte~) main::$0 (byte*~) main::$1 (byte~) main::$2 -(byte~) main::$3 -(byte*~) main::$4 -(boolean~) main::$5 +(byte*~) main::$3 +(byte~) main::$4 +(byte*~) main::$5 (boolean~) main::$6 +(boolean~) main::$7 (label) main::@1 (label) main::@2 (label) main::@return @@ -65,26 +67,27 @@ main: scope:[main] from (byte~) main::$0 ← > (byte*) SCREEN (byte*~) main::$1 ← (byte*) SCREEN + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::l ← (byte/signed byte/word/signed word) 4 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (byte~) main::$3 ← (byte[]) main::his *idx (byte) main::h - (word) main::w ← { (byte~) main::$3, (byte) main::l } - (byte*~) main::$4 ← ((byte*)) (word) main::w - (byte*) main::sc ← (byte*~) main::$4 + (word) main::w ← { *((byte[]) main::his + (byte) main::h), (byte) main::l } + (byte*~) main::$5 ← ((byte*)) (word) main::w + (byte*) main::sc ← (byte*~) main::$5 *((byte*) main::sc) ← (byte) '*' (byte) main::l ← ++ (byte) main::l - (boolean~) main::$5 ← (byte) main::l != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h ← ++ (byte) main::h - (boolean~) main::$6 ← (byte) main::h != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@4 main::@4: scope:[main] from main::@3 to:main::@return @@ -96,7 +99,7 @@ main::@return: scope:[main] from main::@4 to:@end @end: scope:[] from @1 -Fixing word constructor with main::w ← main::$3 w= main::l +Fixing word constructor with main::w ← *(main::his + main::h) w= main::l Removing empty block main::@4 CONTROL FLOW GRAPH @begin: scope:[] from @@ -106,26 +109,27 @@ main: scope:[main] from (byte~) main::$0 ← > (byte*) SCREEN (byte*~) main::$1 ← (byte*) SCREEN + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::l ← (byte/signed byte/word/signed word) 4 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (byte~) main::$3 ← (byte[]) main::his *idx (byte) main::h - (word) main::w ← (byte~) main::$3 w= (byte) main::l - (byte*~) main::$4 ← ((byte*)) (word) main::w - (byte*) main::sc ← (byte*~) main::$4 + (word) main::w ← *((byte[]) main::his + (byte) main::h) w= (byte) main::l + (byte*~) main::$5 ← ((byte*)) (word) main::w + (byte*) main::sc ← (byte*~) main::$5 *((byte*) main::sc) ← (byte) '*' (byte) main::l ← ++ (byte) main::l - (boolean~) main::$5 ← (byte) main::l != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h ← ++ (byte) main::h - (boolean~) main::$6 ← (byte) main::h != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -145,26 +149,27 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN (byte*~) main::$1 ← (byte*) SCREEN + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::l ← (byte/signed byte/word/signed word) 4 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 - (byte~) main::$3 ← (byte[]) main::his *idx (byte) main::h - (word) main::w ← (byte~) main::$3 w= (byte) main::l - (byte*~) main::$4 ← ((byte*)) (word) main::w - (byte*) main::sc ← (byte*~) main::$4 + (word) main::w ← *((byte[]) main::his + (byte) main::h) w= (byte) main::l + (byte*~) main::$5 ← ((byte*)) (word) main::w + (byte*) main::sc ← (byte*~) main::$5 *((byte*) main::sc) ← (byte) '*' (byte) main::l ← ++ (byte) main::l - (boolean~) main::$5 ← (byte) main::l != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h ← ++ (byte) main::h - (boolean~) main::$6 ← (byte) main::h != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -187,7 +192,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -199,21 +206,20 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) (byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 ) (byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 ) - (byte~) main::$3 ← (byte[]) main::his#1 *idx (byte) main::h#2 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 - (byte*~) main::$4 ← ((byte*)) (word) main::w#0 - (byte*) main::sc#0 ← (byte*~) main::$4 + (word) main::w#0 ← *((byte[]) main::his#1 + (byte) main::h#2) w= (byte) main::l#2 + (byte*~) main::$5 ← ((byte*)) (word) main::w#0 + (byte*) main::sc#0 ← (byte*~) main::$5 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$5 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte[]) main::his#3 ← phi( main::@2/(byte[]) main::his#1 ) (byte) main::h#3 ← phi( main::@2/(byte) main::h#2 ) (byte) main::h#1 ← ++ (byte) main::h#3 - (boolean~) main::$6 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -233,7 +239,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -245,21 +253,20 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) (byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 ) (byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 ) - (byte~) main::$3 ← (byte[]) main::his#1 *idx (byte) main::h#2 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 - (byte*~) main::$4 ← ((byte*)) (word) main::w#0 - (byte*) main::sc#0 ← (byte*~) main::$4 + (word) main::w#0 ← *((byte[]) main::his#1 + (byte) main::h#2) w= (byte) main::l#2 + (byte*~) main::$5 ← ((byte*)) (word) main::w#0 + (byte*) main::sc#0 ← (byte*~) main::$5 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$5 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte[]) main::his#3 ← phi( main::@2/(byte[]) main::his#1 ) (byte) main::h#3 ← phi( main::@2/(byte) main::h#2 ) (byte) main::h#1 ← ++ (byte) main::h#3 - (boolean~) main::$6 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -282,10 +289,11 @@ INITIAL SSA SYMBOL TABLE (byte~) main::$0 (byte*~) main::$1 (byte~) main::$2 -(byte~) main::$3 -(byte*~) main::$4 -(boolean~) main::$5 +(byte*~) main::$3 +(byte~) main::$4 +(byte*~) main::$5 (boolean~) main::$6 +(boolean~) main::$7 (label) main::@1 (label) main::@2 (label) main::@3 @@ -320,7 +328,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -332,21 +342,20 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) (byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 ) (byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 ) - (byte~) main::$3 ← (byte[]) main::his#1 *idx (byte) main::h#2 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 - (byte*~) main::$4 ← ((byte*)) (word) main::w#0 - (byte*) main::sc#0 ← (byte*~) main::$4 + (word) main::w#0 ← *((byte[]) main::his#1 + (byte) main::h#2) w= (byte) main::l#2 + (byte*~) main::$5 ← ((byte*)) (word) main::w#0 + (byte*) main::sc#0 ← (byte*~) main::$5 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$5 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte[]) main::his#3 ← phi( main::@2/(byte[]) main::his#1 ) (byte) main::h#3 ← phi( main::@2/(byte) main::h#2 ) (byte) main::h#1 ← ++ (byte) main::h#3 - (boolean~) main::$6 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -356,7 +365,7 @@ main::@return: scope:[main] from main::@3 to:@end @end: scope:[] from @1 -Alias (byte*) main::sc#0 = (byte*~) main::$4 +Alias (byte*) main::sc#0 = (byte*~) main::$5 Alias (byte) main::h#2 = (byte) main::h#3 Alias (byte[]) main::his#1 = (byte[]) main::his#3 Succesful SSA optimization Pass2AliasElimination @@ -368,7 +377,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -380,18 +391,17 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) (byte) main::h#2 ← phi( main::@1/(byte) main::h#4 main::@2/(byte) main::h#2 ) (byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 main::@2/(byte[]) main::his#1 ) - (byte~) main::$3 ← (byte[]) main::his#1 *idx (byte) main::h#2 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#1 + (byte) main::h#2) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$5 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#2 - (boolean~) main::$6 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -412,7 +422,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -424,18 +436,17 @@ main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) (byte) main::h#2 ← phi( main::@1/(byte) main::h#4 ) (byte[]) main::his#1 ← phi( main::@1/(byte[]) main::his#2 ) - (byte~) main::$3 ← (byte[]) main::his#1 *idx (byte) main::h#2 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#1 + (byte) main::h#2) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$5 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#2 - (boolean~) main::$6 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -456,7 +467,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -466,18 +479,17 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 - (boolean~) main::$5 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$5) goto main::@2 + (boolean~) main::$6 ← (byte) main::l#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$6) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - (boolean~) main::$6 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 2 - if((boolean~) main::$6) goto main::@1 + (boolean~) main::$7 ← (byte) main::h#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$7) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -487,8 +499,8 @@ main::@return: scope:[main] from main::@3 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$5 if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 -Simple Condition (boolean~) main::$6 if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 +Simple Condition (boolean~) main::$6 if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 +Simple Condition (boolean~) main::$7 if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -498,7 +510,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (byte*) SCREEN#0 (byte*~) main::$1 ← (byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } (byte) main::h#0 ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@3 @@ -508,8 +522,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -517,7 +530,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -538,7 +551,9 @@ main: scope:[main] from @1 (byte~) main::$0 ← > (const byte*) SCREEN#0 (byte*~) main::$1 ← (const byte*) SCREEN#0 + (word/signed word) 256 (byte~) main::$2 ← > (byte*~) main::$1 - (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2 } + (byte*~) main::$3 ← (const byte*) SCREEN#0 + (word/signed word) 512 + (byte~) main::$4 ← > (byte*~) main::$3 + (byte[]) main::his#0 ← { (byte~) main::$0, (byte~) main::$2, (byte~) main::$4 } to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 ) @@ -546,8 +561,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -555,7 +569,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -567,13 +581,15 @@ main::@return: scope:[main] from main::@3 Constant (const byte) main::$0 = >SCREEN#0 Constant (const byte*) main::$1 = SCREEN#0+256 +Constant (const byte*) main::$3 = SCREEN#0+512 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 (byte~) main::$2 ← > (const byte*) main::$1 - (byte[]) main::his#0 ← { (const byte) main::$0, (byte~) main::$2 } + (byte~) main::$4 ← > (const byte*) main::$3 + (byte[]) main::his#0 ← { (const byte) main::$0, (byte~) main::$2, (byte~) main::$4 } to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 ) @@ -581,8 +597,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -590,7 +605,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -601,12 +616,13 @@ main::@return: scope:[main] from main::@3 @end: scope:[] from @1 Constant (const byte) main::$2 = >main::$1 +Constant (const byte) main::$4 = >main::$3 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from @1 - (byte[]) main::his#0 ← { (const byte) main::$0, (const byte) main::$2 } + (byte[]) main::his#0 ← { (const byte) main::$0, (const byte) main::$2, (const byte) main::$4 } to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::h#4 ← phi( main/(const byte) main::h#0 main::@3/(byte) main::h#1 ) @@ -614,8 +630,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -623,7 +638,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -633,7 +648,7 @@ main::@return: scope:[main] from main::@3 to:@end @end: scope:[] from @1 -Constant (const byte[]) main::his#0 = { main::$0, main::$2 } +Constant (const byte[]) main::his#0 = { main::$0, main::$2, main::$4 } Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -646,8 +661,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -655,7 +669,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -678,8 +692,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (byte[]) main::his#2 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((byte[]) main::his#2 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -687,7 +700,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -709,8 +722,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(const byte) main::l#0 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -718,7 +730,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -728,17 +740,17 @@ main::@return: scope:[main] from main::@3 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::h#4 -Multiple usages for variable. Not optimizing sub-constant (byte) main::h#4 Inlining constant with var siblings (const byte) main::h#0 Inlining constant with var siblings (const byte) main::h#0 Inlining constant with var siblings (const byte) main::l#0 Inlining constant with var siblings (const byte) main::l#0 -Constant inlined main::h#0 = (byte/signed byte/word/signed word) 0 Constant inlined main::$1 = (const byte*) SCREEN#0+(word/signed word) 256 Constant inlined main::$2 = >(const byte*) SCREEN#0+(word/signed word) 256 Constant inlined main::l#0 = (byte/signed byte/word/signed word) 4 Constant inlined main::$0 = >(const byte*) SCREEN#0 +Constant inlined main::h#0 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$3 = (const byte*) SCREEN#0+(word/signed word) 512 +Constant inlined main::$4 = >(const byte*) SCREEN#0+(word/signed word) 512 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @begin: scope:[] from @@ -750,8 +762,7 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::l#1 ) - (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -759,7 +770,7 @@ main::@2: scope:[main] from main::@1 main::@2 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 to:main::@return main::@return: scope:[main] from main::@3 return @@ -776,7 +787,6 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 = ((byte*))(word/signed word) 1024 (void()) main() -(byte~) main::$3 (label) main::@1 (label) main::@2 (label) main::@3 @@ -785,7 +795,7 @@ FINAL SYMBOL TABLE (byte) main::h#1 (byte) main::h#4 (byte[]) main::his -(const byte[]) main::his#0 = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256 } +(const byte[]) main::his#0 = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256, >(const byte*) SCREEN#0+(word/signed word) 512 } (byte) main::l (byte) main::l#1 (byte) main::l#2 @@ -812,8 +822,7 @@ main::@1: scope:[main] from main main::@5 to:main::@2 main::@2: scope:[main] from main::@1 main::@6 (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@6/(byte~) main::l#3 ) - (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 - (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 + (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 *((byte*) main::sc#0) ← (byte) '*' (byte) main::l#1 ← ++ (byte) main::l#2 @@ -821,7 +830,7 @@ main::@2: scope:[main] from main::@1 main::@6 to:main::@3 main::@3: scope:[main] from main::@2 (byte) main::h#1 ← ++ (byte) main::h#4 - if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@5 + if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@5 to:main::@return main::@return: scope:[main] from main::@3 return @@ -846,7 +855,6 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... CONTROL FLOW GRAPH - LIVE RANGES FOUND @begin: scope:[] from [0] phi() [ ] @@ -865,30 +873,29 @@ main::@1: scope:[main] from main main::@5 to:main::@2 main::@2: scope:[main] from main::@1 main::@6 [6] (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@6/(byte~) main::l#3 ) [ main::h#4 main::l#2 ] - [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] - [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] - [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] - [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] - [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] - [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::h#4 main::l#1 ] + [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] + [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] + [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] + [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] + [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::h#4 main::l#1 ] to:main::@3 main::@3: scope:[main] from main::@2 - [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] - [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@5 [ main::h#1 ] + [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] + [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@5 [ main::h#1 ] to:main::@return main::@return: scope:[main] from main::@3 - [15] return [ ] + [14] return [ ] to:@return main::@5: scope:[main] from main::@3 - [16] (byte~) main::h#5 ← (byte) main::h#1 [ main::h#5 ] + [15] (byte~) main::h#5 ← (byte) main::h#1 [ main::h#5 ] to:main::@1 main::@6: scope:[main] from main::@2 - [17] (byte~) main::l#3 ← (byte) main::l#1 [ main::h#4 main::l#3 ] + [16] (byte~) main::l#3 ← (byte) main::l#1 [ main::h#4 main::l#3 ] to:main::@2 Created 2 initial phi equivalence classes -Coalesced [16] main::h#5 ← main::h#1 -Coalesced [17] main::l#3 ← main::l#1 +Coalesced [15] main::h#5 ← main::h#1 +Coalesced [16] main::l#3 ← main::l#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@5 Culled Empty Block (label) main::@6 @@ -903,7 +910,6 @@ Propagating live ranges... Propagating live ranges... Propagating live ranges... Propagating live ranges... -Propagating live ranges... CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @begin: scope:[] from [0] phi() [ ] @@ -922,19 +928,18 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [6] (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::l#1 ) [ main::h#4 main::l#2 ] - [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] - [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] - [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] - [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] - [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] - [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] + [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] + [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] + [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] + [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] + [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] to:main::@3 main::@3: scope:[main] from main::@2 - [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] - [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] + [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] + [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] to:main::@return main::@return: scope:[main] from main::@3 - [15] return [ ] + [14] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -955,19 +960,18 @@ main::@1: scope:[main] from main main::@3 to:main::@2 main::@2: scope:[main] from main::@1 main::@2 [6] (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::l#1 ) [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) - [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] ( main:2 [ main::h#4 main::l#2 main::$3 ] ) - [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) - [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) - [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) - [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) - [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) + [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) + [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) + [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) + [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) + [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) to:main::@3 main::@3: scope:[main] from main::@2 - [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) - [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) + [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) + [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) to:main::@return main::@return: scope:[main] from main::@3 - [15] return [ ] ( main:2 [ ] ) + [14] return [ ] ( main:2 [ ] ) to:@return DOMINATORS @@ -1000,14 +1004,13 @@ Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@2 main::@1 depth: 1 VARIABLE REGISTER WEIGHTS (byte*) SCREEN (void()) main() -(byte~) main::$3 202.0 (byte) main::h (byte) main::h#1 16.5 -(byte) main::h#4 15.375 +(byte) main::h#4 17.571428571428573 (byte[]) main::his (byte) main::l (byte) main::l#1 151.5 -(byte) main::l#2 60.599999999999994 +(byte) main::l#2 75.75 (byte*) main::sc (byte*) main::sc#0 202.0 (word) main::w @@ -1016,20 +1019,17 @@ VARIABLE REGISTER WEIGHTS Initial phi equivalence classes [ main::h#4 main::h#1 ] [ main::l#2 main::l#1 ] -Added variable main::$3 to zero page equivalence class [ main::$3 ] Added variable main::w#0 to zero page equivalence class [ main::w#0 ] Added variable main::sc#0 to zero page equivalence class [ main::sc#0 ] Complete equivalence classes [ main::h#4 main::h#1 ] [ main::l#2 main::l#1 ] -[ main::$3 ] [ main::w#0 ] [ main::sc#0 ] Allocated zp ZP_BYTE:2 [ main::h#4 main::h#1 ] Allocated zp ZP_BYTE:3 [ main::l#2 main::l#1 ] -Allocated zp ZP_BYTE:4 [ main::$3 ] -Allocated zp ZP_WORD:5 [ main::w#0 ] -Allocated zp ZP_WORD:7 [ main::sc#0 ] +Allocated zp ZP_WORD:4 [ main::w#0 ] +Allocated zp ZP_WORD:6 [ main::sc#0 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -1055,9 +1055,8 @@ bend_from_b1: bend: //SEG9 main main: { - .label _3 = 4 - .label w = 5 - .label sc = 7 + .label w = 4 + .label sc = 6 .label l = 3 .label h = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] @@ -1084,74 +1083,79 @@ main: { jmp b2 //SEG19 main::@2 b2: - //SEG20 [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] ( main:2 [ main::h#4 main::l#2 main::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuz3 ldx h lda his,x - sta _3 - //SEG21 [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=vbuz2_word_vbuz3 + sta w+1 lda l sta w - lda _3 - sta w+1 - //SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2 + //SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2 lda w sta sc lda w+1 sta sc+1 - //SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #'*' sta (sc),y - //SEG24 [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1 inc l - //SEG25 [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda l cmp #8 bne b2_from_b2 jmp b3 - //SEG26 main::@3 + //SEG25 main::@3 b3: - //SEG27 [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG26 [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1 inc h - //SEG28 [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG27 [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda h - cmp #2 + cmp #3 bne b1_from_b3 jmp breturn - //SEG29 main::@return + //SEG28 main::@return breturn: - //SEG30 [15] return [ ] ( main:2 [ ] ) + //SEG29 [14] return [ ] ( main:2 [ ] ) rts - his: .byte >SCREEN, >SCREEN+$100 + his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:4 [ main::$3 ] has ALU potential. -Statement [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) always clobbers reg byte a +Potential register analysis [7] main::w#0 ← *(main::his#0 + main::h#4) w= main::l#2 missing fragment vwuz1=pbuc1_derefidx_vbuz2_word_vbuaa allocation: zp ZP_BYTE:2 [ main::h#4 main::h#1 ] reg byte a [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] +Potential register analysis [7] main::w#0 ← *(main::his#0 + main::h#4) w= main::l#2 missing fragment vwuz1=pbuc1_derefidx_vbuaa_word_vbuaa allocation: reg byte a [ main::h#4 main::h#1 ] reg byte a [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] +Potential register analysis [7] main::w#0 ← *(main::his#0 + main::h#4) w= main::l#2 missing fragment vwuz1=pbuc1_derefidx_vbuxx_word_vbuaa allocation: reg byte x [ main::h#4 main::h#1 ] reg byte a [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] +Potential register analysis [7] main::w#0 ← *(main::his#0 + main::h#4) w= main::l#2 missing fragment vwuz1=pbuc1_derefidx_vbuyy_word_vbuaa allocation: reg byte y [ main::h#4 main::h#1 ] reg byte a [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] +MISSING FRAGMENTS + vwuz1=pbuc1_derefidx_vbuz2_word_vbuaa + vwuz1=pbuc1_derefidx_vbuaa_word_vbuaa + vwuz1=pbuc1_derefidx_vbuxx_word_vbuaa + vwuz1=pbuc1_derefidx_vbuyy_word_vbuaa +Statement [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::h#4 main::h#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::l#2 main::l#1 ] -Statement [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y +Statement [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) always clobbers reg byte a +Statement [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::h#4 main::h#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::l#2 main::l#1 ] -Statement [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) always clobbers reg byte a -Statement [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y +Statement [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a +Statement [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) always clobbers reg byte a +Statement [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y Potential registers zp ZP_BYTE:2 [ main::h#4 main::h#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_BYTE:3 [ main::l#2 main::l#1 ] : zp ZP_BYTE:3 , reg byte x , -Potential registers zp ZP_BYTE:4 [ main::$3 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_WORD:5 [ main::w#0 ] : zp ZP_WORD:5 , -Potential registers zp ZP_WORD:7 [ main::sc#0 ] : zp ZP_WORD:7 , +Potential registers zp ZP_WORD:4 [ main::w#0 ] : zp ZP_WORD:4 , +Potential registers zp ZP_WORD:6 [ main::sc#0 ] : zp ZP_WORD:6 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 212.1: zp ZP_BYTE:3 [ main::l#2 main::l#1 ] 202: zp ZP_BYTE:4 [ main::$3 ] 202: zp ZP_WORD:5 [ main::w#0 ] 202: zp ZP_WORD:7 [ main::sc#0 ] 31.88: zp ZP_BYTE:2 [ main::h#4 main::h#1 ] +Uplift Scope [main] 227.25: zp ZP_BYTE:3 [ main::l#2 main::l#1 ] 202: zp ZP_WORD:4 [ main::w#0 ] 202: zp ZP_WORD:6 [ main::sc#0 ] 34.07: zp ZP_BYTE:2 [ main::h#4 main::h#1 ] Uplift Scope [] -Uplifting [main] best 6693 combination zp ZP_BYTE:3 [ main::l#2 main::l#1 ] reg byte a [ main::$3 ] zp ZP_WORD:5 [ main::w#0 ] zp ZP_WORD:7 [ main::sc#0 ] reg byte x [ main::h#4 main::h#1 ] -Uplifting [] best 6693 combination -Attempting to uplift remaining variables inzp ZP_BYTE:3 [ main::l#2 main::l#1 ] -Uplifting [main] best 6693 combination zp ZP_BYTE:3 [ main::l#2 main::l#1 ] -Coalescing zero page register [ zp ZP_WORD:5 [ main::w#0 ] ] with [ zp ZP_WORD:7 [ main::sc#0 ] ] -Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ main::l#2 main::l#1 ] -Allocated (was zp ZP_WORD:5) zp ZP_WORD:3 [ main::w#0 main::sc#0 ] +Uplifting [main] best 5883 combination reg byte x [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] zp ZP_WORD:6 [ main::sc#0 ] zp ZP_BYTE:2 [ main::h#4 main::h#1 ] +Uplifting [] best 5883 combination +Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::h#4 main::h#1 ] +Uplifting [main] best 5883 combination zp ZP_BYTE:2 [ main::h#4 main::h#1 ] +Coalescing zero page register [ zp ZP_WORD:4 [ main::w#0 ] ] with [ zp ZP_WORD:6 [ main::sc#0 ] ] +Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ main::w#0 main::sc#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -1180,11 +1184,12 @@ bend: main: { .label w = 3 .label sc = 3 - .label l = 2 + .label h = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta h jmp b1 //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: @@ -1194,9 +1199,8 @@ main: { b1: //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 4 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 - lda #4 - sta l + //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 4 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #4 jmp b2 //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: @@ -1204,37 +1208,36 @@ main: { jmp b2 //SEG19 main::@2 b2: - //SEG20 [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] ( main:2 [ main::h#4 main::l#2 main::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx - lda his,x - //SEG21 [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=vbuaa_word_vbuz2 + //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuxx + ldy h + lda his,y sta w+1 - lda l - sta w - //SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1 - //SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1 + stx w + //SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1 + //SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #'*' sta (sc),y - //SEG24 [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1 - inc l - //SEG25 [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda l - cmp #8 + //SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG24 [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #8 bne b2_from_b2 jmp b3 - //SEG26 main::@3 + //SEG25 main::@3 b3: - //SEG27 [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuxx=_inc_vbuxx - inx - //SEG28 [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuxx_neq_vbuc1_then_la1 - cpx #2 + //SEG26 [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1 + inc h + //SEG27 [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda h + cmp #3 bne b1_from_b3 jmp breturn - //SEG29 main::@return + //SEG28 main::@return breturn: - //SEG30 [15] return [ ] ( main:2 [ ] ) + //SEG29 [14] return [ ] ( main:2 [ ] ) rts - his: .byte >SCREEN, >SCREEN+$100 + his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } ASSEMBLER OPTIMIZATIONS @@ -1272,27 +1275,25 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() -(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::h -(byte) main::h#1 reg byte x 16.5 -(byte) main::h#4 reg byte x 15.375 +(byte) main::h#1 h zp ZP_BYTE:2 16.5 +(byte) main::h#4 h zp ZP_BYTE:2 17.571428571428573 (byte[]) main::his -(const byte[]) main::his#0 his = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256 } +(const byte[]) main::his#0 his = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256, >(const byte*) SCREEN#0+(word/signed word) 512 } (byte) main::l -(byte) main::l#1 l zp ZP_BYTE:2 151.5 -(byte) main::l#2 l zp ZP_BYTE:2 60.599999999999994 +(byte) main::l#1 reg byte x 151.5 +(byte) main::l#2 reg byte x 75.75 (byte*) main::sc (byte*) main::sc#0 sc zp ZP_WORD:3 202.0 (word) main::w (word) main::w#0 w zp ZP_WORD:3 202.0 -reg byte x [ main::h#4 main::h#1 ] -zp ZP_BYTE:2 [ main::l#2 main::l#1 ] -reg byte a [ main::$3 ] +zp ZP_BYTE:2 [ main::h#4 main::h#1 ] +reg byte x [ main::l#2 main::l#1 ] zp ZP_WORD:3 [ main::w#0 main::sc#0 ] FINAL CODE @@ -1314,48 +1315,47 @@ FINAL CODE main: { .label w = 3 .label sc = 3 - .label l = 2 + .label h = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] - //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 - ldx #0 + //SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 + lda #0 + sta h //SEG12 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] //SEG13 [5] phi (byte) main::h#4 = (byte) main::h#1 [phi:main::@3->main::@1#0] -- register_copy //SEG14 main::@1 b1: //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 4 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 - lda #4 - sta l + //SEG16 [6] phi (byte) main::l#2 = (byte/signed byte/word/signed word) 4 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + ldx #4 //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] //SEG18 [6] phi (byte) main::l#2 = (byte) main::l#1 [phi:main::@2->main::@2#0] -- register_copy //SEG19 main::@2 b2: - //SEG20 [7] (byte~) main::$3 ← (const byte[]) main::his#0 *idx (byte) main::h#4 [ main::h#4 main::l#2 main::$3 ] ( main:2 [ main::h#4 main::l#2 main::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx - lda his,x - //SEG21 [8] (word) main::w#0 ← (byte~) main::$3 w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=vbuaa_word_vbuz2 + //SEG20 [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_vbuxx + ldy h + lda his,y sta w+1 - lda l - sta w - //SEG22 [9] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1 - //SEG23 [10] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1 + stx w + //SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1 + //SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #'*' sta (sc),y - //SEG24 [11] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1 - inc l - //SEG25 [12] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda l - cmp #8 - bne b2 - //SEG26 main::@3 - //SEG27 [13] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuxx=_inc_vbuxx + //SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG28 [14] if((byte) main::h#1!=(byte/signed byte/word/signed word) 2) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuxx_neq_vbuc1_then_la1 - cpx #2 + //SEG24 [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #8 + bne b2 + //SEG25 main::@3 + //SEG26 [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1 + inc h + //SEG27 [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda h + cmp #3 bne b1 - //SEG29 main::@return - //SEG30 [15] return [ ] ( main:2 [ ] ) + //SEG28 main::@return + //SEG29 [14] return [ ] ( main:2 [ ] ) rts - his: .byte >SCREEN, >SCREEN+$100 + his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200 } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.sym b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.sym index 3672ef309..0a1a3923c 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inline-word.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inline-word.sym @@ -4,25 +4,23 @@ (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word) 1024 (void()) main() -(byte~) main::$3 reg byte a 202.0 (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::h -(byte) main::h#1 reg byte x 16.5 -(byte) main::h#4 reg byte x 15.375 +(byte) main::h#1 h zp ZP_BYTE:2 16.5 +(byte) main::h#4 h zp ZP_BYTE:2 17.571428571428573 (byte[]) main::his -(const byte[]) main::his#0 his = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256 } +(const byte[]) main::his#0 his = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256, >(const byte*) SCREEN#0+(word/signed word) 512 } (byte) main::l -(byte) main::l#1 l zp ZP_BYTE:2 151.5 -(byte) main::l#2 l zp ZP_BYTE:2 60.599999999999994 +(byte) main::l#1 reg byte x 151.5 +(byte) main::l#2 reg byte x 75.75 (byte*) main::sc (byte*) main::sc#0 sc zp ZP_WORD:3 202.0 (word) main::w (word) main::w#0 w zp ZP_WORD:3 202.0 -reg byte x [ main::h#4 main::h#1 ] -zp ZP_BYTE:2 [ main::l#2 main::l#1 ] -reg byte a [ main::$3 ] +zp ZP_BYTE:2 [ main::h#4 main::h#1 ] +reg byte x [ main::l#2 main::l#1 ] zp ZP_WORD:3 [ main::w#0 main::sc#0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg index 9bd60395a..955522645 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg @@ -12,13 +12,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [12] return [ ] ( main:2 [ ] ) + [10] return [ ] ( main:2 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log b/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log index 545395ed5..9226d2bf4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log @@ -20,13 +20,11 @@ proc (void()) main() (byte[]) main::data ← { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3 } (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte[]) main::txt *idx (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data *idx (byte) main::i - *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$1 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) main::txt + (byte) main::i) + *((byte*) SCREEN2 + (byte) main::i) ← *((byte[]) main::data + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 main::@return: return endproc // main() @@ -37,9 +35,7 @@ SYMBOLS (byte*) SCREEN (byte*) SCREEN2 (void()) main() -(byte~) main::$0 -(byte~) main::$1 -(boolean~) main::$2 +(boolean~) main::$0 (label) main::@1 (label) main::@return (byte[]) main::data @@ -60,13 +56,11 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte[]) main::txt *idx (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data *idx (byte) main::i - *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$1 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) main::txt + (byte) main::i) + *((byte*) SCREEN2 + (byte) main::i) ← *((byte[]) main::data + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 to:main::@return @@ -91,13 +85,11 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte[]) main::txt *idx (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data *idx (byte) main::i - *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$1 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) main::txt + (byte) main::i) + *((byte*) SCREEN2 + (byte) main::i) ← *((byte[]) main::data + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -121,13 +113,11 @@ main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@1 - (byte~) main::$0 ← (byte[]) main::txt *idx (byte) main::i - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data *idx (byte) main::i - *((byte*) SCREEN2 + (byte) main::i) ← (byte~) main::$1 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) main::txt + (byte) main::i) + *((byte*) SCREEN2 + (byte) main::i) ← *((byte[]) main::data + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -161,13 +151,11 @@ main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 ) - (byte~) main::$0 ← (byte[]) main::txt#1 *idx (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#1 *idx (byte) main::i#2 - *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2) + *((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -200,13 +188,11 @@ main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 ) - (byte~) main::$0 ← (byte[]) main::txt#1 *idx (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#1 *idx (byte) main::i#2 - *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2) + *((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -237,9 +223,7 @@ INITIAL SSA SYMBOL TABLE (byte*) SCREEN2#2 (byte*) SCREEN2#3 (void()) main() -(byte~) main::$0 -(byte~) main::$1 -(boolean~) main::$2 +(boolean~) main::$0 (label) main::@1 (label) main::@return (byte[]) main::data @@ -274,13 +258,11 @@ main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 ) - (byte~) main::$0 ← (byte[]) main::txt#1 *idx (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#1 *idx (byte) main::i#2 - *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2) + *((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -316,13 +298,11 @@ main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 main::@1/(byte[]) main::txt#1 ) - (byte~) main::$0 ← (byte[]) main::txt#1 *idx (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#1 *idx (byte) main::i#2 - *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2) + *((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -358,13 +338,11 @@ main::@1: scope:[main] from main main::@1 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte[]) main::txt#1 ← phi( main/(byte[]) main::txt#0 ) - (byte~) main::$0 ← (byte[]) main::txt#1 *idx (byte) main::i#2 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#1 *idx (byte) main::i#2 - *((byte*) SCREEN2#1 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::txt#1 + (byte) main::i#2) + *((byte*) SCREEN2#1 + (byte) main::i#2) ← *((byte[]) main::data#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -394,13 +372,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte[]) main::txt#0 *idx (byte) main::i#2 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#0 *idx (byte) main::i#2 - *((byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#0 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2) + *((byte*) SCREEN2#0 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$2) goto main::@1 + (boolean~) main::$0 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$0) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -410,7 +386,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 +Simple Condition (boolean~) main::$0 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -425,10 +401,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (byte[]) main::txt#0 *idx (byte) main::i#2 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (byte[]) main::data#0 *idx (byte) main::i#2 - *((byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 + *((byte*) SCREEN#0 + (byte) main::i#2) ← *((byte[]) main::txt#0 + (byte) main::i#2) + *((byte*) SCREEN2#0 + (byte) main::i#2) ← *((byte[]) main::data#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -454,10 +428,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 - *((byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) + *((byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -478,10 +450,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 - *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) + *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -493,14 +463,6 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined $0 = (word/signed word) 1024+(byte/signed byte/word/signed word) 40 @@ -513,10 +475,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) - (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 - *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) + *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -537,8 +497,6 @@ FINAL SYMBOL TABLE (byte*) SCREEN2 (const byte*) SCREEN2#0 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() -(byte~) main::$0 -(byte~) main::$1 (label) main::@1 (label) main::@return (byte[]) main::data @@ -563,10 +521,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) - (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 - (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 - *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) + *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 to:main::@return @@ -601,22 +557,20 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] - [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] - [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] - [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 [ main::i#1 ] + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] + [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] + [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 - [12] return [ ] + [10] return [ ] to:@return main::@3: scope:[main] from main::@1 - [13] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] + [11] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] to:main::@1 Created 1 initial phi equivalence classes -Coalesced [13] main::i#3 ← main::i#1 +Coalesced [11] main::i#3 ← main::i#1 Coalesced down to 1 phi equivalence classes Culled Empty Block (label) main::@3 Block Sequence Planned @begin @1 @end main main::@1 main::@return @@ -641,15 +595,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] - [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] - [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] - [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] + [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] + [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 - [12] return [ ] + [10] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -667,15 +619,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [12] return [ ] ( main:2 [ ] ) + [10] return [ ] ( main:2 [ ] ) to:@return DOMINATORS @@ -702,25 +652,17 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte*) SCREEN2 (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$1 22.0 (byte[]) main::data (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 13.2 +(byte) main::i#2 22.0 (byte[]) main::txt Initial phi equivalence classes [ main::i#2 main::i#1 ] -Added variable main::$0 to zero page equivalence class [ main::$0 ] -Added variable main::$1 to zero page equivalence class [ main::$1 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ main::$0 ] -[ main::$1 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_BYTE:3 [ main::$0 ] -Allocated zp ZP_BYTE:4 [ main::$1 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -747,8 +689,6 @@ bend_from_b1: bend: //SEG9 main main: { - .label _0 = 3 - .label _1 = 4 .label i = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: @@ -762,47 +702,42 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda txt,x - sta _0 - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _0 - ldx i sta SCREEN,x - //SEG17 [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda data,x - sta _1 - //SEG18 [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _1 - ldx i sta SCREEN2,x - //SEG19 [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 + ldx i + //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG20 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b1_from_b1 jmp breturn - //SEG21 main::@return + //SEG19 main::@return breturn: - //SEG22 [12] return [ ] ( main:2 [ ] ) + //SEG20 [10] return [ ] ( main:2 [ ] ) rts txt: .text "qwe" data: .byte 1, 2, 3 } REGISTER UPLIFT POTENTIAL REGISTERS -Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ main::$0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.7: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:3 [ main::$0 ] 22: zp ZP_BYTE:4 [ main::$1 ] +Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 383 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] +Uplifting [main] best 383 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 383 combination ASSEMBLER BEFORE OPTIMIZATION @@ -842,23 +777,21 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda txt,x - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG17 [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda data,x - //SEG18 [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN2,x - //SEG19 [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG20 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG21 main::@return + //SEG19 main::@return breturn: - //SEG22 [12] return [ ] ( main:2 [ ] ) + //SEG20 [10] return [ ] ( main:2 [ ] ) rts txt: .text "qwe" data: .byte 1, 2, 3 @@ -894,21 +827,17 @@ FINAL SYMBOL TABLE (byte*) SCREEN2 (const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 (label) main::@1 (label) main::@return (byte[]) main::data (const byte[]) main::data#0 data = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3 } (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 13.2 +(byte) main::i#2 reg byte x 22.0 (byte[]) main::txt (const byte[]) main::txt#0 txt = (string) "qwe" reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$0 ] -reg byte a [ main::$1 ] FINAL CODE //SEG0 Basic Upstart @@ -935,21 +864,19 @@ main: { //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG14 main::@1 b1: - //SEG15 [6] (byte~) main::$0 ← (const byte[]) main::txt#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda txt,x - //SEG16 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG17 [8] (byte~) main::$1 ← (const byte[]) main::data#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda data,x - //SEG18 [9] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN2,x - //SEG19 [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG17 [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG20 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG18 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG21 main::@return - //SEG22 [12] return [ ] ( main:2 [ ] ) + //SEG19 main::@return + //SEG20 [10] return [ ] ( main:2 [ ] ) rts txt: .text "qwe" data: .byte 1, 2, 3 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym b/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym index 3bbb78a00..3f045f0ff 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym @@ -6,18 +6,14 @@ (byte*) SCREEN2 (const byte*) SCREEN2#0 SCREEN2 = ((byte*))(word/signed word) 1024+(byte/signed byte/word/signed word) 40 (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$1 reg byte a 22.0 (label) main::@1 (label) main::@return (byte[]) main::data (const byte[]) main::data#0 data = { (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 3 } (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 13.2 +(byte) main::i#2 reg byte x 22.0 (byte[]) main::txt (const byte[]) main::txt#0 txt = (string) "qwe" reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$0 ] -reg byte a [ main::$1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.cfg index 509575d02..b6f257254 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.cfg @@ -14,19 +14,18 @@ main::@1: scope:[main] from main main::@2 [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) - [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] ( main:2 [ main::i#2 main::j#3 main::$0 ] ) - [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) - [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) - [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) + [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [11] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) - [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) - [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) + [10] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) + [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 - [14] return [ ] ( main:2 [ ] ) + [13] return [ ] ( main:2 [ ] ) to:@return main::@6: scope:[main] from main::@1 - [15] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [14] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.log b/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.log index 68b4db24a..5bfd607f1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.log @@ -29,17 +29,16 @@ proc (void()) main() (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: *((byte*) main::screen + (byte) main::i) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq *idx (byte) main::j - *((byte*) main::cols + (byte) main::i) ← (byte~) main::$0 + *((byte*) main::cols + (byte) main::i) ← *((byte[]) main::colseq + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 (byte) main::j ← (byte/signed byte/word/signed word) 0 main::@2: (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 main::@return: return endproc // main() @@ -50,10 +49,9 @@ SYMBOLS (byte) RED (byte) WHITE (void()) main() -(byte~) main::$0 +(boolean~) main::$0 (boolean~) main::$1 (boolean~) main::$2 -(boolean~) main::$3 (label) main::@1 (label) main::@2 (label) main::@return @@ -80,17 +78,16 @@ main: scope:[main] from to:main::@1 main::@1: scope:[main] from main main::@2 *((byte*) main::screen + (byte) main::i) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq *idx (byte) main::j - *((byte*) main::cols + (byte) main::i) ← (byte~) main::$0 + *((byte*) main::cols + (byte) main::i) ← *((byte[]) main::colseq + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 (byte) main::j ← (byte/signed byte/word/signed word) 0 @@ -121,17 +118,16 @@ main: scope:[main] from to:main::@1 main::@1: scope:[main] from main main::@2 *((byte*) main::screen + (byte) main::i) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq *idx (byte) main::j - *((byte*) main::cols + (byte) main::i) ← (byte~) main::$0 + *((byte*) main::cols + (byte) main::i) ← *((byte[]) main::colseq + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j ← (byte/signed byte/word/signed word) 0 @@ -161,17 +157,16 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 *((byte*) main::screen + (byte) main::i) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq *idx (byte) main::j - *((byte*) main::cols + (byte) main::i) ← (byte~) main::$0 + *((byte*) main::cols + (byte) main::i) ← *((byte[]) main::colseq + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j ← (byte/signed byte/word/signed word) 0 @@ -212,12 +207,11 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 ) @@ -226,8 +220,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 ) @@ -272,12 +266,11 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 ) @@ -286,8 +279,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 ) @@ -327,10 +320,9 @@ INITIAL SSA SYMBOL TABLE (byte) WHITE#1 (byte) WHITE#2 (void()) main() -(byte~) main::$0 +(boolean~) main::$0 (boolean~) main::$1 (boolean~) main::$2 -(boolean~) main::$3 (label) main::@1 (label) main::@2 (label) main::@3 @@ -388,12 +380,11 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 ) @@ -402,8 +393,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 ) @@ -423,7 +414,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 from (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 +Inversing boolean not (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 from (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 3 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -448,11 +439,10 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#3 ) @@ -461,8 +451,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#3 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) main::cols#3 ← phi( main::@1/(byte*) main::cols#1 ) @@ -516,11 +506,10 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#2 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cols#2 ← phi( main::@1/(byte*) main::cols#1 main::@3/(byte*) main::cols#1 ) @@ -529,8 +518,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 main::@3/(byte*) main::screen#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -574,17 +563,16 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -627,17 +615,16 @@ main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 ) *((byte*) main::screen#1 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#1 *idx (byte) main::j#3 - *((byte*) main::cols#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#1 + (byte) main::i#2) ← *((byte[]) main::colseq#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -674,17 +661,16 @@ main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) *((byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#0 *idx (byte) main::j#3 - *((byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#0 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 40 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -697,8 +683,8 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@2 -Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@2 +Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -717,8 +703,7 @@ main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) *((byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#0 *idx (byte) main::j#3 - *((byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) main::cols#0 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@2 to:main::@3 @@ -757,8 +742,7 @@ main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(const byte) main::j#0 main::@2/(byte) main::j#4 ) (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (byte[]) main::colseq#0 *idx (byte) main::j#3 - *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) main::cols#0 + (byte) main::i#2) ← *((byte[]) main::colseq#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@2 to:main::@3 @@ -788,8 +772,7 @@ main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(const byte) main::j#0 main::@2/(byte) main::j#4 ) (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 - *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@2 to:main::@3 @@ -808,9 +791,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::j#3 Not culling empty block because it shares successor with its predecessor. (label) main::@3 -Multiple usages for variable. Not optimizing sub-constant (byte) main::j#3 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 @@ -832,8 +813,7 @@ main::@1: scope:[main] from main main::@2 (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 - *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@2 to:main::@3 @@ -863,7 +843,6 @@ FINAL SYMBOL TABLE (byte) WHITE (const byte) WHITE#0 = (byte/signed byte/word/signed word) 1 (void()) main() -(byte~) main::$0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -899,8 +878,7 @@ main::@1: scope:[main] from main main::@5 (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::j#5 ) (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' - (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 - *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 to:main::@3 @@ -952,34 +930,33 @@ main::@1: scope:[main] from main main::@5 [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::j#5 ) [ main::i#2 main::j#3 ] [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::i#2 main::j#3 ] [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] - [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] - [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] - [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] - [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] + [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] + [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] + [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [11] phi() [ main::i#2 ] + [10] phi() [ main::i#2 ] to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - [12] (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] - [13] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] - [14] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@5 [ main::j#4 main::i#1 ] + [11] (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] + [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] + [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@5 [ main::j#4 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 - [15] return [ ] + [14] return [ ] to:@return main::@5: scope:[main] from main::@2 - [16] (byte~) main::i#5 ← (byte) main::i#1 [ main::i#5 main::j#4 ] - [17] (byte~) main::j#5 ← (byte) main::j#4 [ main::i#5 main::j#5 ] + [15] (byte~) main::i#5 ← (byte) main::i#1 [ main::i#5 main::j#4 ] + [16] (byte~) main::j#5 ← (byte) main::j#4 [ main::i#5 main::j#5 ] to:main::@1 main::@6: scope:[main] from main::@1 - [18] (byte~) main::j#6 ← (byte) main::j#1 [ main::i#2 main::j#6 ] + [17] (byte~) main::j#6 ← (byte) main::j#1 [ main::i#2 main::j#6 ] to:main::@2 Created 3 initial phi equivalence classes -Coalesced [16] main::i#5 ← main::i#1 -Coalesced [17] main::j#5 ← main::j#4 -Coalesced [18] main::j#6 ← main::j#1 +Coalesced [15] main::i#5 ← main::i#1 +Coalesced [16] main::j#5 ← main::j#4 +Coalesced [17] main::j#6 ← main::j#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@5 @@ -1012,21 +989,20 @@ main::@1: scope:[main] from main main::@2 [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::i#2 main::j#3 ] [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 main::j#3 ] [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] - [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] - [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] - [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] - [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] + [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] + [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] + [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [11] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] - [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] - [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] + [10] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] + [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] to:main::@return main::@return: scope:[main] from main::@2 - [14] return [ ] + [13] return [ ] to:@return main::@6: scope:[main] from main::@1 - [15] phi() [ main::i#2 main::j#1 ] + [14] phi() [ main::i#2 main::j#1 ] to:main::@2 CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -1046,21 +1022,20 @@ main::@1: scope:[main] from main main::@2 [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) - [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] ( main:2 [ main::i#2 main::j#3 main::$0 ] ) - [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) - [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) - [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) + [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [11] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) - [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) - [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) + [10] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) + [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) to:main::@return main::@return: scope:[main] from main::@2 - [14] return [ ] ( main:2 [ ] ) + [13] return [ ] ( main:2 [ ] ) to:@return main::@6: scope:[main] from main::@1 - [15] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [14] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 DOMINATORS @@ -1090,29 +1065,25 @@ VARIABLE REGISTER WEIGHTS (byte) RED (byte) WHITE (void()) main() -(byte~) main::$0 22.0 (byte*) main::cols (byte[]) main::colseq (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 5.5 +(byte) main::i#2 6.285714285714286 (byte) main::j (byte) main::j#1 11.0 -(byte) main::j#3 8.25 +(byte) main::j#3 11.0 (byte) main::j#4 7.333333333333333 (byte*) main::screen Initial phi equivalence classes [ main::i#2 main::i#1 ] [ main::j#3 main::j#4 main::j#1 ] -Added variable main::$0 to zero page equivalence class [ main::$0 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ main::j#3 main::j#4 main::j#1 ] -[ main::$0 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ] -Allocated zp ZP_BYTE:4 [ main::$0 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -1142,7 +1113,6 @@ bend: main: { .const screen = $400 .const cols = $d800 - .label _0 = 4 .label j = 3 .label i = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] @@ -1165,47 +1135,44 @@ main: { lda #'*' ldx i sta screen,x - //SEG18 [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] ( main:2 [ main::i#2 main::j#3 main::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldx j lda colseq,x - sta _0 - //SEG19 [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _0 ldx i sta cols,x - //SEG20 [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j - //SEG21 [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda j cmp #3 bne b6_from_b1 - //SEG22 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG23 [11] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG24 main::@2 + //SEG23 main::@2 b2: - //SEG25 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuz1=_inc_vbuz1 + //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG26 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$28 bne b1_from_b2 jmp breturn - //SEG27 main::@return + //SEG26 main::@return breturn: - //SEG28 [14] return [ ] ( main:2 [ ] ) + //SEG27 [13] return [ ] ( main:2 [ ] ) rts - //SEG29 [15] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG30 main::@6 + //SEG29 main::@6 b6: - //SEG31 [11] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG32 [11] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 colseq: .byte WHITE, RED, GREEN } @@ -1214,16 +1181,17 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ] +Statement [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a Statement [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a +Statement [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 26.58: zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ] 22: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:4 [ main::$0 ] +Uplift Scope [main] 29.33: zp ZP_BYTE:3 [ main::j#3 main::j#4 main::j#1 ] 22.79: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 553 combination reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] +Uplifting [main] best 553 combination reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 553 combination ASSEMBLER BEFORE OPTIMIZATION @@ -1272,40 +1240,39 @@ main: { //SEG17 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG18 [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] ( main:2 [ main::i#2 main::j#3 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda colseq,y - //SEG19 [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta cols,x - //SEG20 [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG21 [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #3 bne b6_from_b1 - //SEG22 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG23 [11] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG24 main::@2 + //SEG23 main::@2 b2: - //SEG25 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx=_inc_vbuxx + //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG26 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b2 jmp breturn - //SEG27 main::@return + //SEG26 main::@return breturn: - //SEG28 [14] return [ ] ( main:2 [ ] ) + //SEG27 [13] return [ ] ( main:2 [ ] ) rts - //SEG29 [15] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG30 main::@6 + //SEG29 main::@6 b6: - //SEG31 [11] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG32 [11] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 colseq: .byte WHITE, RED, GREEN } @@ -1354,7 +1321,6 @@ FINAL SYMBOL TABLE (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word) 1 (void()) main() -(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@6 @@ -1365,17 +1331,16 @@ FINAL SYMBOL TABLE (const byte[]) main::colseq#0 colseq = { (const byte) WHITE#0, (const byte) RED#0, (const byte) GREEN#0 } (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#2 reg byte x 6.285714285714286 (byte) main::j (byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 8.25 +(byte) main::j#3 reg byte y 11.0 (byte) main::j#4 reg byte y 7.333333333333333 (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::j#3 main::j#4 main::j#1 ] -reg byte a [ main::$0 ] FINAL CODE //SEG0 Basic Upstart @@ -1411,32 +1376,31 @@ main: { //SEG17 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte) '*' [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #'*' sta screen,x - //SEG18 [7] (byte~) main::$0 ← (const byte[]) main::colseq#0 *idx (byte) main::j#3 [ main::i#2 main::j#3 main::$0 ] ( main:2 [ main::i#2 main::j#3 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG18 [7] *((const byte*) main::cols#0 + (byte) main::i#2) ← *((const byte[]) main::colseq#0 + (byte) main::j#3) [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda colseq,y - //SEG19 [8] *((const byte*) main::cols#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 main::j#3 ] ( main:2 [ main::i#2 main::j#3 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta cols,x - //SEG20 [9] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy + //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG21 [10] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 3) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #3 bne b2 - //SEG22 [11] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG23 [11] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG24 main::@2 + //SEG23 main::@2 b2: - //SEG25 [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx=_inc_vbuxx + //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx=_inc_vbuxx inx - //SEG26 [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 40) goto main::@1 [ main::i#1 main::j#4 ] ( main:2 [ main::i#1 main::j#4 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG27 main::@return - //SEG28 [14] return [ ] ( main:2 [ ] ) + //SEG26 main::@return + //SEG27 [13] return [ ] ( main:2 [ ] ) rts - //SEG29 [15] phi from main::@1 to main::@6 [phi:main::@1->main::@6] - //SEG30 main::@6 - //SEG31 [11] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG32 [11] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG29 main::@6 + //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy colseq: .byte WHITE, RED, GREEN } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.sym b/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.sym index 6c6ee87e2..3e7de54fb 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmem-const-array.sym @@ -8,7 +8,6 @@ (byte) WHITE (const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word) 1 (void()) main() -(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@6 @@ -19,14 +18,13 @@ (const byte[]) main::colseq#0 colseq = { (const byte) WHITE#0, (const byte) RED#0, (const byte) GREEN#0 } (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 5.5 +(byte) main::i#2 reg byte x 6.285714285714286 (byte) main::j (byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 8.25 +(byte) main::j#3 reg byte y 11.0 (byte) main::j#4 reg byte y 7.333333333333333 (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 reg byte x [ main::i#2 main::i#1 ] reg byte y [ main::j#3 main::j#4 main::j#1 ] -reg byte a [ main::$0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg index 8f38e9c32..ae23a0382 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.cfg @@ -13,19 +13,18 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:2 [ main::j#3 main::i#2 main::$0 ] ) - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) - [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) - [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) + [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [10] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) + [9] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) + [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) + [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 - [13] return [ ] ( main:2 [ ] ) + [12] return [ ] ( main:2 [ ] ) to:@return main::@6: scope:[main] from main::@1 - [14] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [13] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log index ef51713a7..3a71f7fea 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log @@ -19,17 +19,16 @@ proc (void()) main() (byte) main::j ← (byte/signed byte/word/signed word) 0 (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) TXT + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 (byte) main::j ← (byte/signed byte/word/signed word) 0 main::@2: (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 main::@return: return endproc // main() @@ -39,10 +38,9 @@ SYMBOLS (byte*) SCREEN (byte[]) TXT (void()) main() -(byte~) main::$0 +(boolean~) main::$0 (boolean~) main::$1 (boolean~) main::$2 -(boolean~) main::$3 (label) main::@1 (label) main::@2 (label) main::@return @@ -60,17 +58,16 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) TXT + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 (byte) main::j ← (byte/signed byte/word/signed word) 0 @@ -96,17 +93,16 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) TXT + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j ← (byte/signed byte/word/signed word) 0 @@ -131,17 +127,16 @@ main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) TXT *idx (byte) main::j - *((byte*) SCREEN + (byte) main::i) ← (byte~) main::$0 + *((byte*) SCREEN + (byte) main::i) ← *((byte[]) TXT + (byte) main::j) (byte) main::j ← ++ (byte) main::j - (boolean~) main::$1 ← (byte) main::j == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i ← ++ (byte) main::i - (boolean~) main::$3 ← (byte) main::i != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j ← (byte/signed byte/word/signed word) 0 @@ -175,12 +170,11 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 ) @@ -188,8 +182,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) @@ -225,12 +219,11 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 ) @@ -238,8 +231,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) @@ -279,10 +272,9 @@ INITIAL SSA SYMBOL TABLE (byte[]) TXT#4 (byte[]) TXT#5 (void()) main() -(byte~) main::$0 +(boolean~) main::$0 (boolean~) main::$1 (boolean~) main::$2 -(boolean~) main::$3 (label) main::@1 (label) main::@2 (label) main::@3 @@ -318,12 +310,11 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 ) @@ -331,8 +322,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) @@ -350,7 +341,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 from (boolean~) main::$1 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 +Inversing boolean not (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 from (boolean~) main::$0 ← (byte) main::j#1 == (byte/signed byte/word/signed word) 8 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -368,11 +359,10 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#5 ) @@ -380,8 +370,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#5 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte*) SCREEN#5 ← phi( main::@1/(byte*) SCREEN#1 ) @@ -423,11 +413,10 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#3 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#3 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#1 main::@3/(byte*) SCREEN#1 ) @@ -435,8 +424,8 @@ main::@2: scope:[main] from main::@1 main::@3 (byte[]) TXT#3 ← phi( main::@1/(byte[]) TXT#1 main::@3/(byte[]) TXT#1 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#2 ) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -471,17 +460,16 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@2/(byte*) SCREEN#1 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 main::@2/(byte[]) TXT#1 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -515,17 +503,16 @@ main::@1: scope:[main] from main main::@2 (byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) (byte[]) TXT#1 ← phi( main/(byte[]) TXT#2 ) - (byte~) main::$0 ← (byte[]) TXT#1 *idx (byte) main::j#3 - *((byte*) SCREEN#1 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#1 + (byte) main::i#2) ← *((byte[]) TXT#1 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -555,17 +542,16 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) - (byte~) main::$0 ← (byte[]) TXT#0 *idx (byte) main::j#3 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#0 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 - (boolean~) main::$2 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::j#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::j#4 ← phi( main::@1/(byte) main::j#1 main::@3/(byte) main::j#2 ) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$3 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 - if((boolean~) main::$3) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 101 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::j#2 ← (byte/signed byte/word/signed word) 0 @@ -578,8 +564,8 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$2 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 -Simple Condition (boolean~) main::$3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 +Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -593,8 +579,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte) main::j#3 ← phi( main/(byte) main::j#0 main::@2/(byte) main::j#4 ) - (byte~) main::$0 ← (byte[]) TXT#0 *idx (byte) main::j#3 - *((byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + *((byte*) SCREEN#0 + (byte) main::i#2) ← *((byte[]) TXT#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 @@ -628,8 +613,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) (byte) main::j#3 ← phi( main/(const byte) main::j#0 main::@2/(byte) main::j#4 ) - (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 @@ -648,9 +632,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::j#3 Not culling empty block because it shares successor with its predecessor. (label) main::@3 -Multiple usages for variable. Not optimizing sub-constant (byte) main::j#3 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0 @@ -671,8 +653,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) - (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 @@ -700,7 +681,6 @@ FINAL SYMBOL TABLE (byte[]) TXT (const byte[]) TXT#0 = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (void()) main() -(byte~) main::$0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -729,8 +709,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@5 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::j#5 ) - (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 - *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 + *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) (byte) main::j#1 ← ++ (byte) main::j#3 if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 to:main::@3 @@ -781,34 +760,33 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@5 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::j#3 main::i#2 ] [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::j#5 ) [ main::j#3 main::i#2 ] - [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] - [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] - [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] + [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] + [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [10] phi() [ main::i#2 ] + [9] phi() [ main::i#2 ] to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - [11] (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] - [12] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] - [13] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@5 [ main::j#4 main::i#1 ] + [10] (byte) main::j#4 ← phi( main::@6/(byte~) main::j#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] + [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] + [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@5 [ main::j#4 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 - [14] return [ ] + [13] return [ ] to:@return main::@5: scope:[main] from main::@2 - [15] (byte~) main::j#5 ← (byte) main::j#4 [ main::j#5 main::i#1 ] - [16] (byte~) main::i#5 ← (byte) main::i#1 [ main::j#5 main::i#5 ] + [14] (byte~) main::j#5 ← (byte) main::j#4 [ main::j#5 main::i#1 ] + [15] (byte~) main::i#5 ← (byte) main::i#1 [ main::j#5 main::i#5 ] to:main::@1 main::@6: scope:[main] from main::@1 - [17] (byte~) main::j#6 ← (byte) main::j#1 [ main::i#2 main::j#6 ] + [16] (byte~) main::j#6 ← (byte) main::j#1 [ main::i#2 main::j#6 ] to:main::@2 Created 3 initial phi equivalence classes -Coalesced [15] main::j#5 ← main::j#4 -Coalesced [16] main::i#5 ← main::i#1 -Coalesced [17] main::j#6 ← main::j#1 +Coalesced [14] main::j#5 ← main::j#4 +Coalesced [15] main::i#5 ← main::i#1 +Coalesced [16] main::j#6 ← main::j#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@5 @@ -840,21 +818,20 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] - [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] - [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] - [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] + [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] + [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [10] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] + [9] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] + [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] + [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] to:main::@return main::@return: scope:[main] from main::@2 - [13] return [ ] + [12] return [ ] to:@return main::@6: scope:[main] from main::@1 - [14] phi() [ main::i#2 main::j#1 ] + [13] phi() [ main::i#2 main::j#1 ] to:main::@2 CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -873,21 +850,20 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) [5] (byte) main::j#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::j#4 ) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:2 [ main::j#3 main::i#2 main::$0 ] ) - [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) - [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) - [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) + [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [10] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) + [9] (byte) main::j#4 ← phi( main::@6/(byte) main::j#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::i#2 main::j#4 ] ( main:2 [ main::i#2 main::j#4 ] ) + [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) + [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 - [13] return [ ] ( main:2 [ ] ) + [12] return [ ] ( main:2 [ ] ) to:@return main::@6: scope:[main] from main::@1 - [14] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) + [13] phi() [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) to:main::@2 DOMINATORS @@ -916,26 +892,22 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte[]) TXT (void()) main() -(byte~) main::$0 22.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 4.714285714285714 +(byte) main::i#2 5.5 (byte) main::j (byte) main::j#1 11.0 -(byte) main::j#3 11.0 +(byte) main::j#3 16.5 (byte) main::j#4 7.333333333333333 Initial phi equivalence classes [ main::j#3 main::j#4 main::j#1 ] [ main::i#2 main::i#1 ] -Added variable main::$0 to zero page equivalence class [ main::$0 ] Complete equivalence classes [ main::j#3 main::j#4 main::j#1 ] [ main::i#2 main::i#1 ] -[ main::$0 ] Allocated zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ] -Allocated zp ZP_BYTE:4 [ main::$0 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -962,7 +934,6 @@ bend_from_b1: bend: //SEG9 main main: { - .label _0 = 4 .label j = 2 .label i = 3 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] @@ -981,60 +952,60 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:2 [ main::j#3 main::i#2 main::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldx j lda TXT,x - sta _0 - //SEG18 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _0 ldx i sta SCREEN,x - //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j - //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda j cmp #8 bne b6_from_b1 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG21 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta j jmp b2 - //SEG23 main::@2 + //SEG22 main::@2 b2: - //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG23 [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$65 bne b1_from_b2 jmp breturn - //SEG26 main::@return + //SEG25 main::@return breturn: - //SEG27 [13] return [ ] ( main:2 [ ] ) + //SEG26 [12] return [ ] ( main:2 [ ] ) rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG29 main::@6 + //SEG28 main::@6 b6: - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG30 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } REGISTER UPLIFT POTENTIAL REGISTERS -Potential registers zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.33: zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] 22: zp ZP_BYTE:4 [ main::$0 ] 21.21: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Uplift Scope [main] 34.83: zp ZP_BYTE:2 [ main::j#3 main::j#4 main::j#1 ] 22: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 483 combination reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte a [ main::$0 ] reg byte x [ main::i#2 main::i#1 ] +Uplifting [main] best 483 combination reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 483 combination ASSEMBLER BEFORE OPTIMIZATION @@ -1077,40 +1048,39 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:2 [ main::j#3 main::i#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda TXT,y - //SEG18 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy + //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b6_from_b1 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG21 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 jmp b2 - //SEG23 main::@2 + //SEG22 main::@2 b2: - //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG23 [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1_from_b2 jmp breturn - //SEG26 main::@return + //SEG25 main::@return breturn: - //SEG27 [13] return [ ] ( main:2 [ ] ) + //SEG26 [12] return [ ] ( main:2 [ ] ) rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG29 main::@6 + //SEG28 main::@6 b6: - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG30 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1156,22 +1126,20 @@ FINAL SYMBOL TABLE (byte[]) TXT (const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (void()) main() -(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@6 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.714285714285714 +(byte) main::i#2 reg byte x 5.5 (byte) main::j (byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 11.0 +(byte) main::j#3 reg byte y 16.5 (byte) main::j#4 reg byte y 7.333333333333333 reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$0 ] FINAL CODE //SEG0 Basic Upstart @@ -1201,31 +1169,30 @@ main: { //SEG15 [5] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy //SEG16 main::@1 b1: - //SEG17 [6] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] ( main:2 [ main::j#3 main::i#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG17 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) TXT#0 + (byte) main::j#3) [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda TXT,y - //SEG18 [7] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::j#3 main::i#2 ] ( main:2 [ main::j#3 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN,x - //SEG19 [8] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy + //SEG18 [7] (byte) main::j#1 ← ++ (byte) main::j#3 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG20 [9] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG19 [8] if((byte) main::j#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::i#2 main::j#1 ] ( main:2 [ main::i#2 main::j#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b2 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 [10] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [9] phi (byte) main::j#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 ldy #0 - //SEG23 main::@2 + //SEG22 main::@2 b2: - //SEG24 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG23 [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG25 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG24 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word) 101) goto main::@1 [ main::j#4 main::i#1 ] ( main:2 [ main::j#4 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$65 bne b1 - //SEG26 main::@return - //SEG27 [13] return [ ] ( main:2 [ ] ) + //SEG25 main::@return + //SEG26 [12] return [ ] ( main:2 [ ] ) rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] - //SEG29 main::@6 - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG31 [10] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 main::@6 + //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [9] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym index 5b56f3fb1..04ded8ff8 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.sym @@ -6,19 +6,17 @@ (byte[]) TXT (const byte[]) TXT#0 TXT = { (byte/signed byte/word/signed word) 3, (byte/signed byte/word/signed word) 1, (byte/signed byte/word/signed word) 13, (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 12, (byte/signed byte/word/signed word) 15, (byte/signed byte/word/signed word) 20, (byte/signed byte/word/signed word) 32 } (void()) main() -(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@6 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 4.714285714285714 +(byte) main::i#2 reg byte x 5.5 (byte) main::j (byte) main::j#1 reg byte y 11.0 -(byte) main::j#3 reg byte y 11.0 +(byte) main::j#3 reg byte y 16.5 (byte) main::j#4 reg byte y 7.333333333333333 reg byte y [ main::j#3 main::j#4 main::j#1 ] reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg index 911f8c4d1..699a7660a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.cfg @@ -13,19 +13,18 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) [5] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:2 [ main::i#3 main::cursor#2 main::$0 ] ) - [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) - [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) - [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) + [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) + [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [10] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] ( main:2 [ main::cursor#2 main::i#4 ] ) - [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) - [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) + [9] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] ( main:2 [ main::cursor#2 main::i#4 ] ) + [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) + [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 - [13] return [ ] ( main:2 [ ] ) + [12] return [ ] ( main:2 [ ] ) to:@return main::@6: scope:[main] from main::@1 - [14] phi() [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) + [13] phi() [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) to:main::@2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log index d2bf84186..91ce68a00 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log @@ -21,18 +21,17 @@ proc (void()) main() (byte*) main::cursor ← (byte*) SCREEN (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i - *((byte*) main::cursor) ← (byte~) main::$0 + *((byte*) main::cursor) ← *((byte[]) TEXT + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@2: (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 main::@return: return endproc // main() @@ -42,11 +41,10 @@ SYMBOLS (byte*) SCREEN (byte[]) TEXT (void()) main() -(byte~) main::$0 +(boolean~) main::$0 (boolean~) main::$1 -(boolean~) main::$2 -(byte*~) main::$3 -(boolean~) main::$4 +(byte*~) main::$2 +(boolean~) main::$3 (label) main::@1 (label) main::@2 (label) main::@return @@ -64,18 +62,17 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i - *((byte*) main::cursor) ← (byte~) main::$0 + *((byte*) main::cursor) ← *((byte[]) TEXT + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -101,18 +98,17 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i - *((byte*) main::cursor) ← (byte~) main::$0 + *((byte*) main::cursor) ← *((byte[]) TEXT + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -137,18 +133,17 @@ main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) TEXT *idx (byte) main::i - *((byte*) main::cursor) ← (byte~) main::$0 + *((byte*) main::cursor) ← *((byte[]) TEXT + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$1 ← (byte) main::i == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte*) main::cursor ← ++ (byte*) main::cursor - (byte*~) main::$3 ← (byte*) SCREEN + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i ← (byte/signed byte/word/signed word) 0 @@ -182,12 +177,11 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) @@ -195,9 +189,9 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) @@ -233,12 +227,11 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) @@ -246,9 +239,9 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) @@ -288,11 +281,10 @@ INITIAL SSA SYMBOL TABLE (byte[]) TEXT#4 (byte[]) TEXT#5 (void()) main() -(byte~) main::$0 +(boolean~) main::$0 (boolean~) main::$1 -(boolean~) main::$2 -(byte*~) main::$3 -(boolean~) main::$4 +(byte*~) main::$2 +(boolean~) main::$3 (label) main::@1 (label) main::@2 (label) main::@3 @@ -328,12 +320,11 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 - (boolean~) main::$2 ← ! (boolean~) main::$1 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 + (boolean~) main::$1 ← ! (boolean~) main::$0 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) @@ -341,9 +332,9 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) @@ -361,7 +352,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Inversing boolean not (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 from (boolean~) main::$1 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 +Inversing boolean not (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 from (boolean~) main::$0 ← (byte) main::i#1 == (byte/signed byte/word/signed word) 8 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -379,11 +370,10 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) @@ -391,9 +381,9 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#5 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#4 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#1 ) @@ -436,11 +426,10 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#3 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) @@ -448,9 +437,9 @@ main::@2: scope:[main] from main::@1 main::@3 (byte*) SCREEN#2 ← phi( main::@1/(byte*) SCREEN#4 main::@3/(byte*) SCREEN#4 ) (byte*) main::cursor#3 ← phi( main::@1/(byte*) main::cursor#2 main::@3/(byte*) main::cursor#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#3 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 @@ -486,18 +475,17 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 main::@2/(byte[]) TEXT#1 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 @@ -532,18 +520,17 @@ main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) (byte[]) TEXT#1 ← phi( main/(byte[]) TEXT#2 ) - (byte~) main::$0 ← (byte[]) TEXT#1 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#1 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#2 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#2 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 @@ -573,18 +560,17 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) - (byte~) main::$0 ← (byte[]) TEXT#0 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 - (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) main::$2) goto main::@2 + (boolean~) main::$1 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) main::$1) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 1000 - (boolean~) main::$4 ← (byte*) main::cursor#1 < (byte*~) main::$3 - if((boolean~) main::$4) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#0 + (word/signed word) 1000 + (boolean~) main::$3 ← (byte*) main::cursor#1 < (byte*~) main::$2 + if((boolean~) main::$3) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 @@ -597,8 +583,8 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 -Simple Condition (boolean~) main::$4 if((byte*) main::cursor#1<(byte*~) main::$3) goto main::@1 +Simple Condition (boolean~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 +Simple Condition (boolean~) main::$3 if((byte*) main::cursor#1<(byte*~) main::$2) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -612,16 +598,15 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#4 ) - (byte~) main::$0 ← (byte[]) TEXT#0 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((byte[]) TEXT#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (byte*) SCREEN#0 + (word/signed word) 1000 - if((byte*) main::cursor#1<(byte*~) main::$3) goto main::@1 + (byte*~) main::$2 ← (byte*) SCREEN#0 + (word/signed word) 1000 + if((byte*) main::cursor#1<(byte*~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::i#2 ← (byte/signed byte/word/signed word) 0 @@ -648,16 +633,15 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#4 ) - (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(const byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - (byte*~) main::$3 ← (const byte*) SCREEN#0 + (word/signed word) 1000 - if((byte*) main::cursor#1<(byte*~) main::$3) goto main::@1 + (byte*~) main::$2 ← (const byte*) SCREEN#0 + (word/signed word) 1000 + if((byte*) main::cursor#1<(byte*~) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 to:main::@2 @@ -670,7 +654,7 @@ main::@return: scope:[main] from main::@2 @end: scope:[] from @1 Constant (const byte*) main::cursor#0 = SCREEN#0 -Constant (const byte*) main::$3 = SCREEN#0+1000 +Constant (const byte*) main::$2 = SCREEN#0+1000 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @begin: scope:[] from @@ -680,15 +664,14 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(const byte*) main::cursor#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#4 ) - (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::i#4 ← phi( main::@1/(byte) main::i#1 main::@3/(const byte) main::i#2 ) (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 - if((byte*) main::cursor#1<(const byte*) main::$3) goto main::@1 + if((byte*) main::cursor#1<(const byte*) main::$2) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 to:main::@2 @@ -700,9 +683,7 @@ main::@return: scope:[main] from main::@2 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#3 Not culling empty block because it shares successor with its predecessor. (label) main::@3 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#3 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 @@ -712,8 +693,8 @@ Inlining constant with var siblings (const byte) main::i#2 Inlining constant with var siblings (const byte*) main::cursor#0 Inlining constant with var siblings (const byte*) main::cursor#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 -Constant inlined main::$3 = (const byte*) SCREEN#0+(word/signed word) 1000 Constant inlined main::i#2 = (byte/signed byte/word/signed word) 0 +Constant inlined main::$2 = (const byte*) SCREEN#0+(word/signed word) 1000 Constant inlined main::cursor#0 = (const byte*) SCREEN#0 Succesful SSA optimization Pass2ConstantInlining CONTROL FLOW GRAPH @@ -724,8 +705,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) - (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@2 to:main::@3 @@ -753,7 +733,6 @@ FINAL SYMBOL TABLE (byte[]) TEXT (const byte[]) TEXT#0 = (string) "camelot " (void()) main() -(byte~) main::$0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -782,8 +761,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@5 (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*~) main::cursor#5 ) (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) - (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 - *((byte*) main::cursor#2) ← (byte~) main::$0 + *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 to:main::@3 @@ -834,34 +812,33 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@5 [5] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@5/(byte*~) main::cursor#5 ) [ main::i#3 main::cursor#2 ] [5] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@5/(byte~) main::i#5 ) [ main::i#3 main::cursor#2 ] - [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] - [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] - [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] - [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] + [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] + [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] to:main::@3 main::@3: scope:[main] from main::@1 - [10] phi() [ main::cursor#2 ] + [9] phi() [ main::cursor#2 ] to:main::@2 main::@2: scope:[main] from main::@3 main::@6 - [11] (byte) main::i#4 ← phi( main::@6/(byte~) main::i#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] - [12] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] - [13] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@5 [ main::i#4 main::cursor#1 ] + [10] (byte) main::i#4 ← phi( main::@6/(byte~) main::i#6 main::@3/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] + [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] + [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@5 [ main::i#4 main::cursor#1 ] to:main::@return main::@return: scope:[main] from main::@2 - [14] return [ ] + [13] return [ ] to:@return main::@5: scope:[main] from main::@2 - [15] (byte~) main::i#5 ← (byte) main::i#4 [ main::i#5 main::cursor#1 ] - [16] (byte*~) main::cursor#5 ← (byte*) main::cursor#1 [ main::i#5 main::cursor#5 ] + [14] (byte~) main::i#5 ← (byte) main::i#4 [ main::i#5 main::cursor#1 ] + [15] (byte*~) main::cursor#5 ← (byte*) main::cursor#1 [ main::i#5 main::cursor#5 ] to:main::@1 main::@6: scope:[main] from main::@1 - [17] (byte~) main::i#6 ← (byte) main::i#1 [ main::cursor#2 main::i#6 ] + [16] (byte~) main::i#6 ← (byte) main::i#1 [ main::cursor#2 main::i#6 ] to:main::@2 Created 3 initial phi equivalence classes -Coalesced [15] main::i#5 ← main::i#4 -Coalesced [16] main::cursor#5 ← main::cursor#1 -Coalesced [17] main::i#6 ← main::i#1 +Coalesced [14] main::i#5 ← main::i#4 +Coalesced [15] main::cursor#5 ← main::cursor#1 +Coalesced [16] main::i#6 ← main::i#1 Coalesced down to 2 phi equivalence classes Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@5 @@ -893,21 +870,20 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] [5] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] - [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] - [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] - [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] - [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] + [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] + [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [10] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] - [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] - [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] + [9] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] + [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] + [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] to:main::@return main::@return: scope:[main] from main::@2 - [13] return [ ] + [12] return [ ] to:@return main::@6: scope:[main] from main::@1 - [14] phi() [ main::cursor#2 main::i#1 ] + [13] phi() [ main::cursor#2 main::i#1 ] to:main::@2 CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -926,21 +902,20 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) [5] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:2 [ main::i#3 main::cursor#2 main::$0 ] ) - [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) - [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) - [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) + [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) + [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) + [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@6 - [10] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] ( main:2 [ main::cursor#2 main::i#4 ] ) - [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) - [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) + [9] (byte) main::i#4 ← phi( main::@6/(byte) main::i#1 main::@1/(byte/signed byte/word/signed word) 0 ) [ main::cursor#2 main::i#4 ] ( main:2 [ main::cursor#2 main::i#4 ] ) + [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) + [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) to:main::@return main::@return: scope:[main] from main::@2 - [13] return [ ] ( main:2 [ ] ) + [12] return [ ] ( main:2 [ ] ) to:@return main::@6: scope:[main] from main::@1 - [14] phi() [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) + [13] phi() [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) to:main::@2 DOMINATORS @@ -969,26 +944,22 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte[]) TEXT (void()) main() -(byte~) main::$0 22.0 (byte*) main::cursor (byte*) main::cursor#1 16.5 -(byte*) main::cursor#2 4.714285714285714 +(byte*) main::cursor#2 5.5 (byte) main::i (byte) main::i#1 11.0 -(byte) main::i#3 11.0 +(byte) main::i#3 16.5 (byte) main::i#4 7.333333333333333 Initial phi equivalence classes [ main::i#3 main::i#4 main::i#1 ] [ main::cursor#2 main::cursor#1 ] -Added variable main::$0 to zero page equivalence class [ main::$0 ] Complete equivalence classes [ main::i#3 main::i#4 main::i#1 ] [ main::cursor#2 main::cursor#1 ] -[ main::$0 ] Allocated zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] Allocated zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] -Allocated zp ZP_BYTE:5 [ main::$0 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -1015,7 +986,6 @@ bend_from_b1: bend: //SEG9 main main: { - .label _0 = 5 .label i = 2 .label cursor = 3 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] @@ -1036,34 +1006,31 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:2 [ main::i#3 main::cursor#2 main::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx i lda TEXT,x - sta _0 - //SEG18 [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=vbuz2 ldy #0 - lda _0 sta (cursor),y - //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG20 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #8 bne b6_from_b1 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [10] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + //SEG21 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 lda #0 sta i jmp b2 - //SEG23 main::@2 + //SEG22 main::@2 b2: - //SEG24 [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG23 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG25 [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG24 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b2 @@ -1073,37 +1040,36 @@ main: { bcc b1_from_b2 !: jmp breturn - //SEG26 main::@return + //SEG25 main::@return breturn: - //SEG27 [13] return [ ] ( main:2 [ ] ) + //SEG26 [12] return [ ] ( main:2 [ ] ) rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG29 main::@6 + //SEG28 main::@6 b6: - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG31 [10] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG30 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte y -Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] -Statement [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a +Statement [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] -Statement [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte y -Statement [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a +Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] +Statement [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a +Statement [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] : zp ZP_WORD:3 , -Potential registers zp ZP_BYTE:5 [ main::$0 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.33: zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] 22: zp ZP_BYTE:5 [ main::$0 ] 21.21: zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] +Uplift Scope [main] 34.83: zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] 22: zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] Uplift Scope [] -Uplifting [main] best 858 combination reg byte x [ main::i#3 main::i#4 main::i#1 ] reg byte a [ main::$0 ] zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] +Uplifting [main] best 858 combination reg byte x [ main::i#3 main::i#4 main::i#1 ] zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] Uplifting [] best 858 combination Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::cursor#2 main::cursor#1 ] @@ -1151,29 +1117,28 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:2 [ main::i#3 main::cursor#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda TEXT,x - //SEG18 [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (cursor),y - //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG20 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b6_from_b1 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG22 [10] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG21 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 jmp b2 - //SEG23 main::@2 + //SEG22 main::@2 b2: - //SEG24 [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG23 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG25 [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG24 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b2 @@ -1183,18 +1148,18 @@ main: { bcc b1_from_b2 !: jmp breturn - //SEG26 main::@return + //SEG25 main::@return breturn: - //SEG27 [13] return [ ] ( main:2 [ ] ) + //SEG26 [12] return [ ] ( main:2 [ ] ) rts - //SEG28 [14] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] b6_from_b1: jmp b6 - //SEG29 main::@6 + //SEG28 main::@6 b6: - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG31 [10] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG30 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1241,22 +1206,20 @@ FINAL SYMBOL TABLE (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "camelot " (void()) main() -(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@6 (label) main::@return (byte*) main::cursor (byte*) main::cursor#1 cursor zp ZP_WORD:2 16.5 -(byte*) main::cursor#2 cursor zp ZP_WORD:2 4.714285714285714 +(byte*) main::cursor#2 cursor zp ZP_WORD:2 5.5 (byte) main::i (byte) main::i#1 reg byte x 11.0 -(byte) main::i#3 reg byte x 11.0 +(byte) main::i#3 reg byte x 16.5 (byte) main::i#4 reg byte x 7.333333333333333 reg byte x [ main::i#3 main::i#4 main::i#1 ] zp ZP_WORD:2 [ main::cursor#2 main::cursor#1 ] -reg byte a [ main::$0 ] FINAL CODE //SEG0 Basic Upstart @@ -1290,27 +1253,26 @@ main: { //SEG15 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG16 main::@1 b1: - //SEG17 [6] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] ( main:2 [ main::i#3 main::cursor#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda TEXT,x - //SEG18 [7] *((byte*) main::cursor#2) ← (byte~) main::$0 [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (cursor),y - //SEG19 [8] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG20 [9] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [8] if((byte) main::i#1!=(byte/signed byte/word/signed word) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #8 bne b2 - //SEG21 [10] phi from main::@1 to main::@2 [phi:main::@1->main::@2] - //SEG22 [10] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 + //SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [9] phi (byte) main::i#4 = (byte/signed byte/word/signed word) 0 [phi:main::@1->main::@2#0] -- vbuxx=vbuc1 ldx #0 - //SEG23 main::@2 + //SEG22 main::@2 b2: - //SEG24 [11] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG23 [10] (byte*) main::cursor#1 ← ++ (byte*) main::cursor#2 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG25 [12] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG24 [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -1319,12 +1281,12 @@ main: { cmp #main::@6] - //SEG29 main::@6 - //SEG30 [10] phi from main::@6 to main::@2 [phi:main::@6->main::@2] - //SEG31 [10] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy + //SEG27 [13] phi from main::@1 to main::@6 [phi:main::@1->main::@6] + //SEG28 main::@6 + //SEG29 [9] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG30 [9] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym index df07640dc..a815f6e91 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.sym @@ -6,19 +6,17 @@ (byte[]) TEXT (const byte[]) TEXT#0 TEXT = (string) "camelot " (void()) main() -(byte~) main::$0 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@6 (label) main::@return (byte*) main::cursor (byte*) main::cursor#1 cursor zp ZP_WORD:2 16.5 -(byte*) main::cursor#2 cursor zp ZP_WORD:2 4.714285714285714 +(byte*) main::cursor#2 cursor zp ZP_WORD:2 5.5 (byte) main::i (byte) main::i#1 reg byte x 11.0 -(byte) main::i#3 reg byte x 11.0 +(byte) main::i#3 reg byte x 16.5 (byte) main::i#4 reg byte x 7.333333333333333 reg byte x [ main::i#3 main::i#4 main::i#1 ] zp ZP_WORD:2 [ main::cursor#2 main::cursor#1 ] -reg byte a [ main::$0 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg b/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg index a84b01105..239d4f426 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.cfg @@ -13,13 +13,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] ( main:2 [ ] ) + [11] return [ ] ( main:2 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.log b/src/main/java/dk/camelot64/kickc/test/ref/literals.log index ec23d7516..a5f6f8a8d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.log @@ -27,14 +27,12 @@ proc (void()) main() (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i - (byte~) main::$1 ← (byte[]) str *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i - (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN + (byte~) main::$0) ← *((byte[]) str + (byte) main::i) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i + *((byte*) SCREEN + (byte~) main::$1) ← *((byte[]) nums + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 main::@return: return endproc // main() @@ -48,9 +46,7 @@ SYMBOLS (void()) main() (byte~) main::$0 (byte~) main::$1 -(byte~) main::$2 -(byte~) main::$3 -(boolean~) main::$4 +(boolean~) main::$2 (label) main::@1 (label) main::@return (byte) main::i @@ -76,14 +72,12 @@ main: scope:[main] from to:main::@1 main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i - (byte~) main::$1 ← (byte[]) str *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i - (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN + (byte~) main::$0) ← *((byte[]) str + (byte) main::i) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i + *((byte*) SCREEN + (byte~) main::$1) ← *((byte[]) nums + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@2 main::@2: scope:[main] from main::@1 to:main::@return @@ -113,14 +107,12 @@ main: scope:[main] from to:main::@1 main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i - (byte~) main::$1 ← (byte[]) str *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i - (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN + (byte~) main::$0) ← *((byte[]) str + (byte) main::i) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i + *((byte*) SCREEN + (byte~) main::$1) ← *((byte[]) nums + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -149,14 +141,12 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i - (byte~) main::$1 ← (byte[]) str *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i - (byte~) main::$3 ← (byte[]) nums *idx (byte) main::i - *((byte*) SCREEN + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN + (byte~) main::$0) ← *((byte[]) str + (byte) main::i) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i + *((byte*) SCREEN + (byte~) main::$1) ← *((byte[]) nums + (byte) main::i) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$4 ← (byte) main::i != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -197,14 +187,12 @@ main::@1: scope:[main] from main main::@1 (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#2 + (byte~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#2 + (byte~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -247,14 +235,12 @@ main::@1: scope:[main] from main main::@1 (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#2 + (byte~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#2 + (byte~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -290,9 +276,7 @@ INITIAL SSA SYMBOL TABLE (void()) main() (byte~) main::$0 (byte~) main::$1 -(byte~) main::$2 -(byte~) main::$3 -(boolean~) main::$4 +(boolean~) main::$2 (label) main::@1 (label) main::@return (byte) main::i @@ -342,14 +326,12 @@ main::@1: scope:[main] from main main::@1 (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#2 + (byte~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#2 + (byte~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -400,14 +382,12 @@ main::@1: scope:[main] from main main::@1 (byte[]) str#1 ← phi( main/(byte[]) str#2 main::@1/(byte[]) str#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#2 + (byte~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#2 + (byte~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -451,14 +431,12 @@ main::@1: scope:[main] from main main::@1 (byte[]) str#1 ← phi( main/(byte[]) str#2 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#1 *idx (byte) main::i#2 - *((byte*) SCREEN#2 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#2 + (byte~) main::$0) ← *((byte[]) str#1 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#2 + (byte~) main::$1) ← *((byte[]) nums#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -494,14 +472,12 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#0 *idx (byte) main::i#2 - *((byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#0 *idx (byte) main::i#2 - *((byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#0 + (byte~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#0 + (byte~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$4 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 - if((boolean~) main::$4) goto main::@1 + (boolean~) main::$2 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 4 + if((boolean~) main::$2) goto main::@1 to:main::@return main::@return: scope:[main] from main::@1 return @@ -511,7 +487,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$4 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 +Simple Condition (boolean~) main::$2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -530,11 +506,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#0 *idx (byte) main::i#2 - *((byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (byte[]) nums#0 *idx (byte) main::i#2 - *((byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 + *((byte*) SCREEN#0 + (byte~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((byte*) SCREEN#0 + (byte~) main::$1) ← *((byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -564,11 +538,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 + *((const byte*) SCREEN#0 + (byte~) main::$0) ← *((byte[]) str#0 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((const byte*) SCREEN#0 + (byte~) main::$1) ← *((const byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -592,11 +564,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte/signed byte/word/signed word) 4 + (byte) main::i#2 - (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 - (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0 + (byte~) main::$2) ← (byte~) main::$3 + *((const byte*) SCREEN#0 + (byte~) main::$0) ← *((const byte[]) str#0 + (byte) main::i#2) + (byte~) main::$1 ← (byte/signed byte/word/signed word) 9 + (byte) main::i#2 + *((const byte*) SCREEN#0 + (byte~) main::$1) ← *((const byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -608,14 +578,14 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Consolidated assigned array index constant in assignment *(SCREEN#0+0) -Consolidated assigned array index constant in assignment *(SCREEN#0+2) +Consolidated array index constant in *(SCREEN#0+0) +Consolidated array index constant in *(SCREEN#0+2) +Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 +Consolidated array index constant in assignment *(SCREEN#0+4 + main::$0) Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Consolidated assigned array index constant in assignment *(SCREEN#0+4 + main::$0) +Consolidated array index constant in assignment *(SCREEN#0+9 + main::$1) Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Consolidated assigned array index constant in assignment *(SCREEN#0+9 + main::$2) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -627,11 +597,9 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) (byte~) main::$0 ← (byte) main::i#2 - (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte~) main::$0) ← (byte~) main::$1 - (byte~) main::$2 ← (byte) main::i#2 - (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte~) main::$2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte~) main::$0) ← *((const byte[]) str#0 + (byte) main::i#2) + (byte~) main::$1 ← (byte) main::i#2 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte~) main::$1) ← *((const byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -645,7 +613,7 @@ main::@return: scope:[main] from main::@1 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$2 +Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1 Succesful SSA optimization Pass2AliasElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -656,10 +624,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@1/(byte) main::i#1 ) - (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 - (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -671,14 +637,6 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined $0 = (string) "bc"+(string) "d" @@ -693,10 +651,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) - (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 - (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 to:main::@return @@ -717,8 +673,6 @@ FINAL SYMBOL TABLE (byte) char (const byte) char#0 = (byte) 'a' (void()) main() -(byte~) main::$1 -(byte~) main::$3 (label) main::@1 (label) main::@return (byte) main::i @@ -747,10 +701,8 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) - (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 - (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 - *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) + *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 to:main::@return @@ -785,22 +737,20 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@3 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@3/(byte~) main::i#3 ) [ main::i#2 ] - [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] - [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 [ main::i#1 ] + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] + [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@3 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] + [11] return [ ] to:@return main::@3: scope:[main] from main::@1 - [14] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] + [12] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ] to:main::@1 Created 1 initial phi equivalence classes -Coalesced [14] main::i#3 ← main::i#1 +Coalesced [12] main::i#3 ← main::i#1 Coalesced down to 1 phi equivalence classes Culled Empty Block (label) main::@3 Block Sequence Planned @begin @1 @end main main::@1 main::@return @@ -825,15 +775,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] - [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] - [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] - [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] + [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] + [11] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -852,15 +800,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) - [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [13] return [ ] ( main:2 [ ] ) + [11] return [ ] ( main:2 [ ] ) to:@return DOMINATORS @@ -887,26 +833,18 @@ VARIABLE REGISTER WEIGHTS (byte*) SCREEN (byte) char (void()) main() -(byte~) main::$1 22.0 -(byte~) main::$3 22.0 (byte) main::i (byte) main::i#1 16.5 -(byte) main::i#2 13.2 +(byte) main::i#2 22.0 (byte) num (byte[]) nums (byte[]) str Initial phi equivalence classes [ main::i#2 main::i#1 ] -Added variable main::$1 to zero page equivalence class [ main::$1 ] -Added variable main::$3 to zero page equivalence class [ main::$3 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ main::$1 ] -[ main::$3 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_BYTE:3 [ main::$1 ] -Allocated zp ZP_BYTE:4 [ main::$3 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -934,8 +872,6 @@ bend_from_b1: bend: //SEG8 main main: { - .label _1 = 3 - .label _3 = 4 .label i = 2 //SEG9 [4] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #char @@ -955,47 +891,44 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda str,x - sta _1 - //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _1 - ldx i sta SCREEN+4,x - //SEG18 [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda nums,x - sta _3 - //SEG19 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _3 - ldx i sta SCREEN+9,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 + ldx i + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG21 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #4 bne b1_from_b1 jmp breturn - //SEG22 main::@return + //SEG20 main::@return breturn: - //SEG23 [13] return [ ] ( main:2 [ ] ) + //SEG21 [11] return [ ] ( main:2 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ main::$1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$3 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [4] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 0) ← (const byte) char#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 2) ← (const byte) num#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 29.7: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:3 [ main::$1 ] 22: zp ZP_BYTE:4 [ main::$3 ] +Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 395 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] reg byte a [ main::$3 ] +Uplifting [main] best 395 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 395 combination ASSEMBLER BEFORE OPTIMIZATION @@ -1042,23 +975,21 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda str,x - //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+4,x - //SEG18 [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda nums,x - //SEG19 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+9,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1_from_b1 jmp breturn - //SEG22 main::@return + //SEG20 main::@return breturn: - //SEG23 [13] return [ ] ( main:2 [ ] ) + //SEG21 [11] return [ ] ( main:2 [ ] ) rts } @@ -1091,13 +1022,11 @@ FINAL SYMBOL TABLE (byte) char (const byte) char#0 char = (byte) 'a' (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 13.2 +(byte) main::i#2 reg byte x 22.0 (byte) num (const byte) num#0 num = (byte/signed byte/word/signed word) 1 (byte[]) nums @@ -1106,8 +1035,6 @@ FINAL SYMBOL TABLE (const byte[]) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$1 ] -reg byte a [ main::$3 ] FINAL CODE //SEG0 Basic Upstart @@ -1142,21 +1069,19 @@ main: { //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda str,x - //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 4 + (byte) main::i#2) ← (byte~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+4,x - //SEG18 [9] (byte~) main::$3 ← (const byte[]) nums#0 *idx (byte) main::i#2 [ main::i#2 main::$3 ] ( main:2 [ main::i#2 main::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda nums,x - //SEG19 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word) 9 + (byte) main::i#2) ← (byte~) main::$3 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta SCREEN+9,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [12] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG19 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #4 bne b1 - //SEG22 main::@return - //SEG23 [13] return [ ] ( main:2 [ ] ) + //SEG20 main::@return + //SEG21 [11] return [ ] ( main:2 [ ] ) rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.sym b/src/main/java/dk/camelot64/kickc/test/ref/literals.sym index 97dc6a707..50951178d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.sym @@ -6,13 +6,11 @@ (byte) char (const byte) char#0 char = (byte) 'a' (void()) main() -(byte~) main::$1 reg byte a 22.0 -(byte~) main::$3 reg byte a 22.0 (label) main::@1 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 16.5 -(byte) main::i#2 reg byte x 13.2 +(byte) main::i#2 reg byte x 22.0 (byte) num (const byte) num#0 num = (byte/signed byte/word/signed word) 1 (byte[]) nums @@ -21,5 +19,3 @@ (const byte[]) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$1 ] -reg byte a [ main::$3 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/local-string.cfg b/src/main/java/dk/camelot64/kickc/test/ref/local-string.cfg index 1445faeb3..f71f810f6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/local-string.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/local-string.cfg @@ -12,14 +12,12 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) - [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [8] return [ ] ( main:2 [ ] ) + [7] return [ ] ( main:2 [ ] ) to:@return main::@2: scope:[main] from main::@1 - [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) - [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/local-string.log b/src/main/java/dk/camelot64/kickc/test/ref/local-string.log index 90179c876..bdfcec767 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/local-string.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/local-string.log @@ -15,13 +15,11 @@ proc (void()) main() (byte[]) main::msg ← (string) "message 2 @" (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@1: - (byte~) main::$0 ← (byte[]) main::msg *idx (byte) main::i - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg + (byte) main::i) != (byte) '@' + if((boolean~) main::$0) goto main::@2 goto main::@3 main::@2: - (byte~) main::$2 ← (byte[]) main::msg *idx (byte) main::i - *((byte*) main::screen + (byte) main::i) ← (byte~) main::$2 + *((byte*) main::screen + (byte) main::i) ← *((byte[]) main::msg + (byte) main::i) (byte) main::i ← ++ (byte) main::i goto main::@1 main::@3: @@ -32,9 +30,7 @@ endproc // main() SYMBOLS (void()) main() -(byte~) main::$0 -(boolean~) main::$1 -(byte~) main::$2 +(boolean~) main::$0 (label) main::@1 (label) main::@2 (label) main::@3 @@ -53,13 +49,11 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) main::msg *idx (byte) main::i - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg + (byte) main::i) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@4 main::@2: scope:[main] from main::@1 main::@5 - (byte~) main::$2 ← (byte[]) main::msg *idx (byte) main::i - *((byte*) main::screen + (byte) main::i) ← (byte~) main::$2 + *((byte*) main::screen + (byte) main::i) ← *((byte[]) main::msg + (byte) main::i) (byte) main::i ← ++ (byte) main::i to:main::@1 main::@4: scope:[main] from main::@1 @@ -91,13 +85,11 @@ main: scope:[main] from (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) main::msg *idx (byte) main::i - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg + (byte) main::i) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (byte[]) main::msg *idx (byte) main::i - *((byte*) main::screen + (byte) main::i) ← (byte~) main::$2 + *((byte*) main::screen + (byte) main::i) ← *((byte[]) main::msg + (byte) main::i) (byte) main::i ← ++ (byte) main::i to:main::@1 main::@return: scope:[main] from main::@1 @@ -119,13 +111,11 @@ main: scope:[main] from @1 (byte) main::i ← (byte/signed byte/word/signed word) 0 to:main::@1 main::@1: scope:[main] from main main::@2 - (byte~) main::$0 ← (byte[]) main::msg *idx (byte) main::i - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg + (byte) main::i) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (byte[]) main::msg *idx (byte) main::i - *((byte*) main::screen + (byte) main::i) ← (byte~) main::$2 + *((byte*) main::screen + (byte) main::i) ← *((byte[]) main::msg + (byte) main::i) (byte) main::i ← ++ (byte) main::i to:main::@1 main::@return: scope:[main] from main::@1 @@ -152,16 +142,14 @@ main::@1: scope:[main] from main main::@2 (byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#2 ) - (byte~) main::$0 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte*) main::screen#1 ← phi( main::@1/(byte*) main::screen#2 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte[]) main::msg#2 ← phi( main::@1/(byte[]) main::msg#1 ) - (byte~) main::$2 ← (byte[]) main::msg#2 *idx (byte) main::i#3 - *((byte*) main::screen#1 + (byte) main::i#3) ← (byte~) main::$2 + *((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#2 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 to:main::@1 main::@return: scope:[main] from main::@1 @@ -186,16 +174,14 @@ main::@1: scope:[main] from main main::@2 (byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#2 ) - (byte~) main::$0 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte*) main::screen#1 ← phi( main::@1/(byte*) main::screen#2 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte[]) main::msg#2 ← phi( main::@1/(byte[]) main::msg#1 ) - (byte~) main::$2 ← (byte[]) main::msg#2 *idx (byte) main::i#3 - *((byte*) main::screen#1 + (byte) main::i#3) ← (byte~) main::$2 + *((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#2 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 to:main::@1 main::@return: scope:[main] from main::@1 @@ -214,9 +200,7 @@ INITIAL SSA SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 -(boolean~) main::$1 -(byte~) main::$2 +(boolean~) main::$0 (label) main::@1 (label) main::@2 (label) main::@return @@ -248,16 +232,14 @@ main::@1: scope:[main] from main main::@2 (byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#2 ) - (byte~) main::$0 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 (byte*) main::screen#1 ← phi( main::@1/(byte*) main::screen#2 ) (byte) main::i#3 ← phi( main::@1/(byte) main::i#2 ) (byte[]) main::msg#2 ← phi( main::@1/(byte[]) main::msg#1 ) - (byte~) main::$2 ← (byte[]) main::msg#2 *idx (byte) main::i#3 - *((byte*) main::screen#1 + (byte) main::i#3) ← (byte~) main::$2 + *((byte*) main::screen#1 + (byte) main::i#3) ← *((byte[]) main::msg#2 + (byte) main::i#3) (byte) main::i#1 ← ++ (byte) main::i#3 to:main::@1 main::@return: scope:[main] from main::@1 @@ -284,13 +266,11 @@ main::@1: scope:[main] from main main::@2 (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@2/(byte*) main::screen#1 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 main::@2/(byte[]) main::msg#1 ) - (byte~) main::$0 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - *((byte*) main::screen#1 + (byte) main::i#2) ← (byte~) main::$2 + *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 main::@return: scope:[main] from main::@1 @@ -316,13 +296,11 @@ main::@1: scope:[main] from main main::@2 (byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 ) (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) (byte[]) main::msg#1 ← phi( main/(byte[]) main::msg#0 ) - (byte~) main::$0 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg#1 + (byte) main::i#2) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (byte[]) main::msg#1 *idx (byte) main::i#2 - *((byte*) main::screen#1 + (byte) main::i#2) ← (byte~) main::$2 + *((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 main::@return: scope:[main] from main::@1 @@ -346,13 +324,11 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (byte~) main::$0 ← (byte[]) main::msg#0 *idx (byte) main::i#2 - (boolean~) main::$1 ← (byte~) main::$0 != (byte) '@' - if((boolean~) main::$1) goto main::@2 + (boolean~) main::$0 ← *((byte[]) main::msg#0 + (byte) main::i#2) != (byte) '@' + if((boolean~) main::$0) goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (byte[]) main::msg#0 *idx (byte) main::i#2 - *((byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 + *((byte*) main::screen#0 + (byte) main::i#2) ← *((byte[]) main::msg#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 main::@return: scope:[main] from main::@1 @@ -363,7 +339,7 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Simple Condition (boolean~) main::$1 if((byte~) main::$0!=(byte) '@') goto main::@2 +Simple Condition (boolean~) main::$0 if(*((byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -375,12 +351,10 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 ) - (byte~) main::$0 ← (byte[]) main::msg#0 *idx (byte) main::i#2 - if((byte~) main::$0!=(byte) '@') goto main::@2 + if(*((byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (byte[]) main::msg#0 *idx (byte) main::i#2 - *((byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 + *((byte*) main::screen#0 + (byte) main::i#2) ← *((byte[]) main::msg#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 main::@return: scope:[main] from main::@1 @@ -402,12 +376,10 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(const byte) main::i#0 main::@2/(byte) main::i#1 ) - (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 - if((byte~) main::$0!=(byte) '@') goto main::@2 + if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 - *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 + *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 main::@return: scope:[main] from main::@1 @@ -418,12 +390,6 @@ main::@return: scope:[main] from main::@1 to:@end @end: scope:[] from @1 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word) 0 @@ -435,12 +401,10 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) - (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 - if((byte~) main::$0!=(byte) '@') goto main::@2 + if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 to:main::@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 - *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 + *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 to:main::@1 main::@return: scope:[main] from main::@1 @@ -456,8 +420,6 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 -(byte~) main::$2 (label) main::@1 (label) main::@2 (label) main::@return @@ -482,15 +444,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte~) main::i#4 ) - (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 - if((byte~) main::$0!=(byte) '@') goto main::@2 + if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 to:main::@return main::@return: scope:[main] from main::@1 return to:@return main::@2: scope:[main] from main::@1 - (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 - *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 + *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 (byte~) main::i#4 ← (byte) main::i#1 to:main::@1 @@ -502,7 +462,6 @@ Adding NOP phi() at start of main CALL GRAPH Calls in [] to main:2 -Propagating live ranges... Propagating live ranges... Propagating live ranges... CONTROL FLOW GRAPH - LIVE RANGES FOUND @@ -520,21 +479,19 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte~) main::i#4 ) [ main::i#2 ] - [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] - [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] + [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] to:main::@return main::@return: scope:[main] from main::@1 - [8] return [ ] + [7] return [ ] to:@return main::@2: scope:[main] from main::@1 - [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] - [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] - [12] (byte~) main::i#4 ← (byte) main::i#1 [ main::i#4 ] + [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [10] (byte~) main::i#4 ← (byte) main::i#1 [ main::i#4 ] to:main::@1 Created 1 initial phi equivalence classes -Coalesced [12] main::i#4 ← main::i#1 +Coalesced [10] main::i#4 ← main::i#1 Coalesced down to 1 phi equivalence classes Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 Adding NOP phi() at start of @begin @@ -543,7 +500,6 @@ Adding NOP phi() at start of @end Adding NOP phi() at start of main Propagating live ranges... Propagating live ranges... -Propagating live ranges... CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES @begin: scope:[] from [0] phi() [ ] @@ -559,16 +515,14 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] - [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] - [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] + [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] to:main::@return main::@return: scope:[main] from main::@1 - [8] return [ ] + [7] return [ ] to:@return main::@2: scope:[main] from main::@1 - [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] - [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] + [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] to:main::@1 CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -586,16 +540,14 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) - [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 - [8] return [ ] ( main:2 [ ] ) + [7] return [ ] ( main:2 [ ] ) to:@return main::@2: scope:[main] from main::@1 - [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) - [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) + [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@1 DOMINATORS @@ -621,25 +573,17 @@ Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 depth: 1 VARIABLE REGISTER WEIGHTS (void()) main() -(byte~) main::$0 22.0 -(byte~) main::$2 22.0 (byte) main::i (byte) main::i#1 22.0 -(byte) main::i#2 11.0 +(byte) main::i#2 18.333333333333332 (byte[]) main::msg (byte*) main::screen Initial phi equivalence classes [ main::i#2 main::i#1 ] -Added variable main::$0 to zero page equivalence class [ main::$0 ] -Added variable main::$2 to zero page equivalence class [ main::$2 ] Complete equivalence classes [ main::i#2 main::i#1 ] -[ main::$0 ] -[ main::$2 ] Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Allocated zp ZP_BYTE:3 [ main::$0 ] -Allocated zp ZP_BYTE:4 [ main::$2 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -665,8 +609,6 @@ bend: //SEG9 main main: { .const screen = $400 - .label _0 = 3 - .label _2 = 4 .label i = 2 //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] b1_from_main: @@ -676,48 +618,47 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i - lda msg,x - sta _0 - //SEG14 [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- vbuz1_neq_vbuc1_then_la1 - lda _0 + //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + ldy i + lda msg,y cmp #'@' bne b2 jmp breturn - //SEG15 main::@return + //SEG14 main::@return breturn: - //SEG16 [8] return [ ] ( main:2 [ ] ) + //SEG15 [7] return [ ] ( main:2 [ ] ) rts - //SEG17 main::@2 + //SEG16 main::@2 b2: - //SEG18 [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda msg,x - sta _2 - //SEG19 [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _2 - ldx i sta screen,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 + ldx i + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG21 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG22 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 msg: .text "message 2 @" } REGISTER UPLIFT POTENTIAL REGISTERS -Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ main::$0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:4 [ main::$2 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , +Potential register analysis [6] if(*(main::msg#0 + main::i#2)!='@') goto main::@2 missing fragment pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 allocation: reg byte a [ main::i#2 main::i#1 ] +MISSING FRAGMENTS + pbuc1_derefidx_vbuaa_neq_vbuc2_then_la1 +Statement [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] +Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 33: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 22: zp ZP_BYTE:3 [ main::$0 ] 22: zp ZP_BYTE:4 [ main::$2 ] +Uplift Scope [main] 40.33: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Uplift Scope [] -Uplifting [main] best 333 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ] +Uplifting [main] best 333 combination reg byte x [ main::i#2 main::i#1 ] Uplifting [] best 333 combination ASSEMBLER BEFORE OPTIMIZATION @@ -752,27 +693,25 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda msg,x - //SEG14 [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b2 jmp breturn - //SEG15 main::@return + //SEG14 main::@return breturn: - //SEG16 [8] return [ ] ( main:2 [ ] ) + //SEG15 [7] return [ ] ( main:2 [ ] ) rts - //SEG17 main::@2 + //SEG16 main::@2 b2: - //SEG18 [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x - //SEG19 [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta screen,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG22 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 msg: .text "message 2 @" } @@ -800,22 +739,18 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#2 reg byte x 18.333333333333332 (byte[]) main::msg (const byte[]) main::msg#0 msg = (string) "message 2 @" (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$0 ] -reg byte a [ main::$2 ] FINAL CODE //SEG0 Basic Upstart @@ -839,24 +774,22 @@ main: { ldx #0 //SEG12 main::@1 b1: - //SEG13 [6] (byte~) main::$0 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$0 ] ( main:2 [ main::i#2 main::$0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda msg,x - //SEG14 [7] if((byte~) main::$0!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b2 - //SEG15 main::@return - //SEG16 [8] return [ ] ( main:2 [ ] ) + //SEG14 main::@return + //SEG15 [7] return [ ] ( main:2 [ ] ) rts - //SEG17 main::@2 + //SEG16 main::@2 b2: - //SEG18 [9] (byte~) main::$2 ← (const byte[]) main::msg#0 *idx (byte) main::i#2 [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x - //SEG19 [10] *((const byte*) main::screen#0 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta screen,x - //SEG20 [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] - //SEG22 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG19 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG20 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 msg: .text "message 2 @" } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/local-string.sym b/src/main/java/dk/camelot64/kickc/test/ref/local-string.sym index a6bb69c17..5a71f23c1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/local-string.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/local-string.sym @@ -2,19 +2,15 @@ (label) @begin (label) @end (void()) main() -(byte~) main::$0 reg byte a 22.0 -(byte~) main::$2 reg byte a 22.0 (label) main::@1 (label) main::@2 (label) main::@return (byte) main::i (byte) main::i#1 reg byte x 22.0 -(byte) main::i#2 reg byte x 11.0 +(byte) main::i#2 reg byte x 18.333333333333332 (byte[]) main::msg (const byte[]) main::msg#0 msg = (string) "message 2 @" (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word) 1024 reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::$0 ] -reg byte a [ main::$2 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log index e5f70c331..d6f2b523b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log @@ -673,8 +673,8 @@ inccnt::@return: scope:[inccnt] from inccnt to:@end @end: scope:[] from @3 -Consolidated assigned array index constant in assignment *(SCREEN#0+0) -Consolidated assigned array index constant in assignment *(SCREEN#0+1) +Consolidated array index constant in *(SCREEN#0+0) +Consolidated array index constant in *(SCREEN#0+1) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log index 9bbb4c329..ddc5abff6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log @@ -424,8 +424,8 @@ inccnt::@return: scope:[inccnt] from inccnt to:@end @end: scope:[] from @3 -Consolidated assigned array index constant in assignment *(SCREEN#0+0) -Consolidated assigned array index constant in assignment *(SCREEN#0+1) +Consolidated array index constant in *(SCREEN#0+0) +Consolidated array index constant in *(SCREEN#0+1) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from diff --git a/src/main/java/dk/camelot64/kickc/test/ref/printmsg.log b/src/main/java/dk/camelot64/kickc/test/ref/printmsg.log index add9eb40e..19038c3d4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/printmsg.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/printmsg.log @@ -94,11 +94,9 @@ endproc // print_word() proc (void()) print_byte((byte) print_byte::b) (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (void~) print_byte::$2 ← call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (void~) print_byte::$5 ← call print_char (byte~) print_byte::$4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) print_byte::@return: return endproc // print_byte() @@ -139,11 +137,9 @@ SYMBOLS (byte[]) msg3 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 -(byte~) print_byte::$1 -(void~) print_byte::$2 -(byte~) print_byte::$3 -(byte~) print_byte::$4 -(void~) print_byte::$5 +(void~) print_byte::$1 +(byte~) print_byte::$2 +(void~) print_byte::$3 (label) print_byte::@return (byte) print_byte::b (byte[]) print_byte::hextab @@ -230,11 +226,9 @@ print_word::@return: scope:[print_word] from print_word print_byte: scope:[print_byte] from (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (void~) print_byte::$2 ← call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (void~) print_byte::$5 ← call print_char (byte~) print_byte::$4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg index e6f6cb0b7..aa40619c5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.cfg @@ -59,7 +59,7 @@ rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 [26] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:2::rvalue:7 [ ] ) - [27] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:2::rvalue:7 [ ] ) + [27] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2::rvalue:7 [ ] ) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 [28] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word) 2 rvalue::@2/(byte) rvalue::i#1 ) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) @@ -69,7 +69,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 [30] return [ ] ( main:2::rvalue:7 [ ] ) to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - [31] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) + [31] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) [32] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] ( main:2::rvalue:7 [ rvalue::i#1 ] ) to:rvalue::@1 lvalue: scope:[lvalue] from main diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log index 790704743..4b34d33e4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log @@ -107,16 +107,14 @@ endproc // lvalue() proc (void()) rvalue() (byte[1024]) rvalue::SCREEN ← (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b ← (byte~) rvalue::$0 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte/signed byte/word/signed word) 1) (byte) rvalue::i ← (byte/signed byte/word/signed word) 2 rvalue::@1: - (boolean~) rvalue::$1 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 goto rvalue::@3 rvalue::@2: - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i - (byte) rvalue::b ← (byte~) rvalue::$2 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte) rvalue::i) (byte) rvalue::i ← ++ (byte) rvalue::i goto rvalue::@1 rvalue::@3: @@ -183,9 +181,7 @@ SYMBOLS (void~) main::$3 (label) main::@return (void()) rvalue() -(byte~) rvalue::$0 -(boolean~) rvalue::$1 -(byte~) rvalue::$2 +(boolean~) rvalue::$0 (label) rvalue::@1 (label) rvalue::@2 (label) rvalue::@3 @@ -251,17 +247,15 @@ lvalue::@return: scope:[lvalue] from lvalue::@3 rvalue: scope:[rvalue] from (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b ← (byte~) rvalue::$0 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte/signed byte/word/signed word) 1) (byte) rvalue::i ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 - (boolean~) rvalue::$1 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@4 rvalue::@2: scope:[rvalue] from rvalue::@1 rvalue::@5 - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i - (byte) rvalue::b ← (byte~) rvalue::$2 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte) rvalue::i) (byte) rvalue::i ← ++ (byte) rvalue::i to:rvalue::@1 rvalue::@4: scope:[rvalue] from rvalue::@1 @@ -337,7 +331,7 @@ Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) main::$2 Eliminating unused variable - keeping the call (void~) main::$3 -Eliminating unused variable (byte) rvaluevar::b and assignment [38] (byte) rvaluevar::b ← *((byte*) rvaluevar::screen) +Eliminating unused variable (byte) rvaluevar::b and assignment [36] (byte) rvaluevar::b ← *((byte*) rvaluevar::screen) Removing empty block @1 Removing empty block lvalue::@4 Removing empty block lvalue::@3 @@ -390,17 +384,15 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b ← (byte~) rvalue::$0 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte/signed byte/word/signed word) 1) (byte) rvalue::i ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 - (boolean~) rvalue::$1 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i - (byte) rvalue::b ← (byte~) rvalue::$2 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte) rvalue::i) (byte) rvalue::i ← ++ (byte) rvalue::i to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -485,17 +477,15 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b ← (byte~) rvalue::$0 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte/signed byte/word/signed word) 1) (byte) rvalue::i ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 - (boolean~) rvalue::$1 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i - (byte) rvalue::b ← (byte~) rvalue::$2 + (byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN + (byte) rvalue::i) (byte) rvalue::i ← ++ (byte) rvalue::i to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -586,21 +576,19 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b#1 ← (byte~) rvalue::$0 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte[1024]) rvalue::SCREEN#2 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 ) (byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) - (boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 (byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 ) (byte[1024]) rvalue::SCREEN#1 ← phi( rvalue::@1/(byte[1024]) rvalue::SCREEN#2 ) - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3 - (byte) rvalue::b#2 ← (byte~) rvalue::$2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#3) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#3 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -699,21 +687,19 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b#1 ← (byte~) rvalue::$0 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte[1024]) rvalue::SCREEN#2 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 ) (byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) - (boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 (byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 ) (byte[1024]) rvalue::SCREEN#1 ← phi( rvalue::@1/(byte[1024]) rvalue::SCREEN#2 ) - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3 - (byte) rvalue::b#2 ← (byte~) rvalue::$2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#3) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#3 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -813,9 +799,7 @@ INITIAL SSA SYMBOL TABLE (label) main::@4 (label) main::@return (void()) rvalue() -(byte~) rvalue::$0 -(boolean~) rvalue::$1 -(byte~) rvalue::$2 +(boolean~) rvalue::$0 (label) rvalue::@1 (label) rvalue::@2 (label) rvalue::@return @@ -893,21 +877,19 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 - (byte) rvalue::b#1 ← (byte~) rvalue::$0 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte[1024]) rvalue::SCREEN#2 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 ) (byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) - (boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 (byte) rvalue::i#3 ← phi( rvalue::@1/(byte) rvalue::i#2 ) (byte[1024]) rvalue::SCREEN#1 ← phi( rvalue::@1/(byte[1024]) rvalue::SCREEN#2 ) - (byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3 - (byte) rvalue::b#2 ← (byte~) rvalue::$2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#3) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#3 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -962,10 +944,8 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 Alias (byte[1024]) lvalue::SCREEN#1 = (byte[1024]) lvalue::SCREEN#2 Alias (byte) lvalue::i#2 = (byte) lvalue::i#3 -Alias (byte) rvalue::b#1 = (byte~) rvalue::$0 Alias (byte[1024]) rvalue::SCREEN#1 = (byte[1024]) rvalue::SCREEN#2 Alias (byte) rvalue::i#2 = (byte) rvalue::i#3 -Alias (byte) rvalue::b#2 = (byte~) rvalue::$2 Alias (byte) lvaluevar::b#1 = (byte) lvaluevar::b#2 Alias (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#3 Alias (byte) lvaluevar::i#2 = (byte) lvaluevar::i#3 @@ -1012,17 +992,17 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte[1024]) rvalue::SCREEN#1 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 rvalue::@2/(byte[1024]) rvalue::SCREEN#1 ) (byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) - (boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1114,17 +1094,17 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte[1024]) rvalue::SCREEN#1 ← phi( rvalue/(byte[1024]) rvalue::SCREEN#0 ) (byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) - (boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#1 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1215,16 +1195,16 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte) rvalue::i#2 ← phi( rvalue/(byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) - (boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 - if((boolean~) rvalue::$1) goto rvalue::@2 + (boolean~) rvalue::$0 ← (byte) rvalue::i#2 < (byte/signed byte/word/signed word) 10 + if((boolean~) rvalue::$0) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1272,7 +1252,7 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 @end: scope:[] from @5 Simple Condition (boolean~) lvalue::$0 if((byte) lvalue::i#2<(byte/signed byte/word/signed word) 10) goto lvalue::@2 -Simple Condition (boolean~) rvalue::$1 if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 +Simple Condition (boolean~) rvalue::$0 if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 Simple Condition (boolean~) lvaluevar::$0 if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto lvaluevar::@2 Simple Condition (boolean~) rvaluevar::$0 if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word) 10) goto rvaluevar::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification @@ -1314,7 +1294,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 rvalue: scope:[rvalue] from main::@1 (byte[1024]) rvalue::SCREEN#0 ← ((byte*)) (word/signed word) 1024 (byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) (byte) rvalue::i#0 ← (byte/signed byte/word/signed word) 2 to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 @@ -1322,7 +1302,7 @@ rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1412,14 +1392,14 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 to:@return rvalue: scope:[rvalue] from main::@1 (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte/signed byte/word/signed word) 1) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte) rvalue::i#2 ← phi( rvalue/(const byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1459,9 +1439,8 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 to:@end @end: scope:[] from @5 -Consolidated assigned array index constant in assignment *(lvalue::SCREEN#0+1) -Consolidated referenced array index constant in assignment rvalue::b#1 -Multiple usages for variable. Not optimizing sub-constant (byte) rvalue::i#2 +Consolidated array index constant in *(lvalue::SCREEN#0+1) +Consolidated array index constant in *(rvalue::SCREEN#0+1) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -1498,14 +1477,14 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 to:@return rvalue: scope:[rvalue] from main::@1 (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte) rvalue::i#2 ← phi( rvalue/(const byte) rvalue::i#0 rvalue::@2/(byte) rvalue::i#1 ) if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1545,8 +1524,6 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1 to:@end @end: scope:[] from @5 -Multiple usages for variable. Not optimizing sub-constant (byte) rvalue::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) rvalue::i#2 Inlining constant with var siblings (const byte) lvalue::i#0 Inlining constant with var siblings (const byte) lvalue::i#0 Inlining constant with var siblings (const byte) rvalue::i#0 @@ -1601,14 +1578,14 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 to:@return rvalue: scope:[rvalue] from main::@1 (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word) 2 rvalue::@2/(byte) rvalue::i#1 ) if((byte) rvalue::i#2<(byte/signed byte/word/signed word) 10) goto rvalue::@2 to:rvalue::@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 to:rvalue::@1 rvalue::@return: scope:[rvalue] from rvalue::@1 @@ -1761,7 +1738,7 @@ rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) - (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 + (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word) 2 rvalue::@2/(byte~) rvalue::i#4 ) @@ -1771,7 +1748,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 return to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 + (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 (byte~) rvalue::i#4 ← (byte) rvalue::i#1 to:rvalue::@1 @@ -1875,7 +1852,7 @@ rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 [30] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] - [31] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] + [31] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 [32] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word) 2 rvalue::@2/(byte~) rvalue::i#4 ) [ rvalue::i#2 ] @@ -1885,7 +1862,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 [34] return [ ] to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - [35] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] + [35] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] [36] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] [37] (byte~) rvalue::i#4 ← (byte) rvalue::i#1 [ rvalue::i#4 ] to:rvalue::@1 @@ -1990,7 +1967,7 @@ rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 [26] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] - [27] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] + [27] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 [28] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word) 2 rvalue::@2/(byte) rvalue::i#1 ) [ rvalue::i#2 ] @@ -2000,7 +1977,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 [30] return [ ] to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - [31] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] + [31] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] [32] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] to:rvalue::@1 lvalue: scope:[lvalue] from main @@ -2081,7 +2058,7 @@ rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 to:rvaluevar::@1 rvalue: scope:[rvalue] from main::@1 [26] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:2::rvalue:7 [ ] ) - [27] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:2::rvalue:7 [ ] ) + [27] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2::rvalue:7 [ ] ) to:rvalue::@1 rvalue::@1: scope:[rvalue] from rvalue rvalue::@2 [28] (byte) rvalue::i#2 ← phi( rvalue/(byte/signed byte/word/signed word) 2 rvalue::@2/(byte) rvalue::i#1 ) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) @@ -2091,7 +2068,7 @@ rvalue::@return: scope:[rvalue] from rvalue::@1 [30] return [ ] ( main:2::rvalue:7 [ ] ) to:@return rvalue::@2: scope:[rvalue] from rvalue::@1 - [31] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) + [31] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) [32] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] ( main:2::rvalue:7 [ rvalue::i#1 ] ) to:rvalue::@1 lvalue: scope:[lvalue] from main @@ -2382,7 +2359,7 @@ rvalue: { //SEG54 [26] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:2::rvalue:7 [ ] ) -- vbuz1=_deref_pbuc1 lda SCREEN sta b - //SEG55 [27] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:2::rvalue:7 [ ] ) -- vbuz1=_deref_pbuc1 + //SEG55 [27] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2::rvalue:7 [ ] ) -- vbuz1=_deref_pbuc1 lda SCREEN+1 sta b_1 //SEG56 [28] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] @@ -2404,7 +2381,7 @@ rvalue: { rts //SEG62 rvalue::@2 b2: - //SEG63 [31] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG63 [31] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda SCREEN,x sta b_2 @@ -2638,7 +2615,7 @@ rvalue: { .const SCREEN = $400 //SEG54 [26] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:2::rvalue:7 [ ] ) -- vbuaa=_deref_pbuc1 lda SCREEN - //SEG55 [27] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:2::rvalue:7 [ ] ) -- vbuaa=_deref_pbuc1 + //SEG55 [27] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2::rvalue:7 [ ] ) -- vbuaa=_deref_pbuc1 lda SCREEN+1 //SEG56 [28] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: @@ -2657,7 +2634,7 @@ rvalue: { rts //SEG62 rvalue::@2 b2: - //SEG63 [31] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG63 [31] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx lda SCREEN,x //SEG64 [32] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] ( main:2::rvalue:7 [ rvalue::i#1 ] ) -- vbuxx=_inc_vbuxx inx @@ -2925,7 +2902,7 @@ rvalue: { .const SCREEN = $400 //SEG54 [26] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:2::rvalue:7 [ ] ) -- vbuaa=_deref_pbuc1 lda SCREEN - //SEG55 [27] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1 [ ] ( main:2::rvalue:7 [ ] ) -- vbuaa=_deref_pbuc1 + //SEG55 [27] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2::rvalue:7 [ ] ) -- vbuaa=_deref_pbuc1 lda SCREEN+1 //SEG56 [28] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] //SEG57 [28] phi (byte) rvalue::i#2 = (byte/signed byte/word/signed word) 2 [phi:rvalue->rvalue::@1#0] -- vbuxx=vbuc1 @@ -2940,7 +2917,7 @@ rvalue: { rts //SEG62 rvalue::@2 b2: - //SEG63 [31] (byte) rvalue::b#2 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) rvalue::i#2 [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG63 [31] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) [ rvalue::i#2 ] ( main:2::rvalue:7 [ rvalue::i#2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx lda SCREEN,x //SEG64 [32] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] ( main:2::rvalue:7 [ rvalue::i#1 ] ) -- vbuxx=_inc_vbuxx inx diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log index 9b8591b62..99f4d83a8 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log @@ -25,8 +25,7 @@ main::@1: if((boolean~) main::$0) goto main::@2 goto main::@3 main::@2: - (byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i - (byte) main::b ← (byte~) main::$1 + (byte) main::b ← *((byte[1024]) main::SCREEN + (byte) main::i) (byte) main::i ← ++ (byte) main::i goto main::@1 main::@3: @@ -38,7 +37,6 @@ endproc // main() SYMBOLS (void()) main() (boolean~) main::$0 -(byte~) main::$1 (label) main::@1 (label) main::@2 (label) main::@3 @@ -60,8 +58,7 @@ main::@1: scope:[main] from main main::@2 if((boolean~) main::$0) goto main::@2 to:main::@4 main::@2: scope:[main] from main::@1 main::@5 - (byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i - (byte) main::b ← (byte~) main::$1 + (byte) main::b ← *((byte[1024]) main::SCREEN + (byte) main::i) (byte) main::i ← ++ (byte) main::i to:main::@1 main::@4: scope:[main] from main::@1 @@ -80,8 +77,7 @@ main::@return: scope:[main] from main::@3 to:@end @end: scope:[] from @1 -Eliminating unused variable (byte) main::b and assignment [5] (byte) main::b ← (byte~) main::$1 -Eliminating unused variable (byte~) main::$1 and assignment [4] (byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i +Eliminating unused variable (byte) main::b and assignment [4] (byte) main::b ← *((byte[1024]) main::SCREEN + (byte) main::i) Eliminating unused variable (byte[1024]) main::SCREEN and assignment [0] (byte[1024]) main::SCREEN ← ((byte*)) (word/signed word) 1024 Removing empty block main::@4 Removing empty block main::@3 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.cfg b/src/main/java/dk/camelot64/kickc/test/ref/scroll.cfg index 57a358775..9014f2997 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.cfg @@ -26,43 +26,42 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@5 main::@8 [12] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte/signed byte/word/signed word) 0 ) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) - [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:2 [ main::nxt#9 main::i#2 main::$7 ] ) - [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) - [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) - [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) + [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) + [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) + [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) to:main::@10 main::@10: scope:[main] from main::@5 - [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) - [18] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) + [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) + [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) to:main::@11 main::@11: scope:[main] from main::@10 - [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) + [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) to:main::@6 main::@6: scope:[main] from main::@10 main::@11 - [20] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) - [20] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) - [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) - [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) + [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) + [19] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) + [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) + [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) to:main::@4 main::@4: scope:[main] from main::@6 main::@8 - [23] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [23] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [24] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [25] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [26] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [22] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [22] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) to:main::@return main::@return: scope:[main] from main::@4 - [27] return [ ] ( main:2 [ ] ) + [26] return [ ] ( main:2 [ ] ) to:@return fillscreen: scope:[fillscreen] from main - [28] phi() [ ] ( main:2::fillscreen:5 [ ] ) + [27] phi() [ ] ( main:2::fillscreen:5 [ ] ) to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 - [29] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) - [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) - [31] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) - [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) + [28] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) + [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) + [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) + [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [33] return [ ] ( main:2::fillscreen:5 [ ] ) + [32] return [ ] ( main:2::fillscreen:5 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.log b/src/main/java/dk/camelot64/kickc/test/ref/scroll.log index 44a085135..916048e60 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.log @@ -74,15 +74,14 @@ main::@3: (byte) main::i ← (byte/signed byte/word/signed word) 0 main::@5: (byte~) main::$6 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line *idx (byte~) main::$6 - *((byte[]) main::line + (byte) main::i) ← (byte~) main::$7 + *((byte[]) main::line + (byte) main::i) ← *((byte[]) main::line + (byte~) main::$6) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$8 ← (byte) main::i != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 (byte) main::c ← *((byte*) main::nxt) - (boolean~) main::$9 ← (byte) main::c == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 (byte*) main::nxt ← (byte*) TEXT (byte) main::c ← *((byte*) main::nxt) main::@6: @@ -125,13 +124,12 @@ SYMBOLS (void()) main() (void~) main::$0 (byte*~) main::$1 -(boolean~) main::$10 (boolean~) main::$2 (boolean~) main::$3 (boolean~) main::$4 (boolean~) main::$5 (byte~) main::$6 -(byte~) main::$7 +(boolean~) main::$7 (boolean~) main::$8 (boolean~) main::$9 (label) main::@1 @@ -196,17 +194,16 @@ main::@9: scope:[main] from main::@8 to:main::@5 main::@5: scope:[main] from main::@5 main::@9 (byte~) main::$6 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line *idx (byte~) main::$6 - *((byte[]) main::line + (byte) main::i) ← (byte~) main::$7 + *((byte[]) main::line + (byte) main::i) ← *((byte[]) main::line + (byte~) main::$6) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$8 ← (byte) main::i != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c ← *((byte*) main::nxt) - (boolean~) main::$9 ← (byte) main::c == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 *((byte[]) main::line + (byte/signed byte/word/signed word) 39) ← (byte) main::c @@ -291,17 +288,16 @@ main::@9: scope:[main] from main::@8 to:main::@5 main::@5: scope:[main] from main::@5 main::@9 (byte~) main::$6 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line *idx (byte~) main::$6 - *((byte[]) main::line + (byte) main::i) ← (byte~) main::$7 + *((byte[]) main::line + (byte) main::i) ← *((byte[]) main::line + (byte~) main::$6) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$8 ← (byte) main::i != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c ← *((byte*) main::nxt) - (boolean~) main::$9 ← (byte) main::c == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 *((byte[]) main::line + (byte/signed byte/word/signed word) 39) ← (byte) main::c @@ -381,17 +377,16 @@ main::@9: scope:[main] from main::@8 to:main::@5 main::@5: scope:[main] from main::@5 main::@9 (byte~) main::$6 ← (byte) main::i + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line *idx (byte~) main::$6 - *((byte[]) main::line + (byte) main::i) ← (byte~) main::$7 + *((byte[]) main::line + (byte) main::i) ← *((byte[]) main::line + (byte~) main::$6) (byte) main::i ← ++ (byte) main::i - (boolean~) main::$8 ← (byte) main::i != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c ← *((byte*) main::nxt) - (boolean~) main::$9 ← (byte) main::c == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 *((byte[]) main::line + (byte/signed byte/word/signed word) 39) ← (byte) main::c @@ -540,11 +535,10 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@5/(byte[]) main::line#1 main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte*) RASTER#10 ← phi( main::@5/(byte*) RASTER#12 ) @@ -555,9 +549,9 @@ main::@10: scope:[main] from main::@5 (byte[]) main::line#4 ← phi( main::@5/(byte[]) main::line#1 ) (byte*) main::nxt#3 ← phi( main::@5/(byte*) main::nxt#5 ) (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$9 ← (byte) main::c#0 == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c#0 == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) TEXT#13 ← phi( main::@10/(byte*) TEXT#4 main::@11/(byte*) TEXT#2 ) @@ -720,11 +714,10 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@5/(byte[]) main::line#1 main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte*) RASTER#10 ← phi( main::@5/(byte*) RASTER#12 ) @@ -735,9 +728,9 @@ main::@10: scope:[main] from main::@5 (byte[]) main::line#4 ← phi( main::@5/(byte[]) main::line#1 ) (byte*) main::nxt#3 ← phi( main::@5/(byte*) main::nxt#5 ) (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$9 ← (byte) main::c#0 == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c#0 == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) TEXT#13 ← phi( main::@10/(byte*) TEXT#4 main::@11/(byte*) TEXT#2 ) @@ -883,13 +876,12 @@ INITIAL SSA SYMBOL TABLE (byte*) fillscreen::screen#2 (void()) main() (byte*~) main::$1 -(boolean~) main::$10 (boolean~) main::$2 (boolean~) main::$3 (boolean~) main::$4 (boolean~) main::$5 (byte~) main::$6 -(byte~) main::$7 +(boolean~) main::$7 (boolean~) main::$8 (boolean~) main::$9 (label) main::@1 @@ -1059,11 +1051,10 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@5/(byte[]) main::line#1 main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte*) RASTER#10 ← phi( main::@5/(byte*) RASTER#12 ) @@ -1074,9 +1065,9 @@ main::@10: scope:[main] from main::@5 (byte[]) main::line#4 ← phi( main::@5/(byte[]) main::line#1 ) (byte*) main::nxt#3 ← phi( main::@5/(byte*) main::nxt#5 ) (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$9 ← (byte) main::c#0 == (byte) '@' - (boolean~) main::$10 ← ! (boolean~) main::$9 - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$8 ← (byte) main::c#0 == (byte) '@' + (boolean~) main::$9 ← ! (boolean~) main::$8 + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) TEXT#13 ← phi( main::@10/(byte*) TEXT#4 main::@11/(byte*) TEXT#2 ) @@ -1132,7 +1123,7 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @end: scope:[] from @2 Inversing boolean not (boolean~) main::$5 ← (byte) main::scroll#1 != (byte/word/signed word) 255 from (boolean~) main::$4 ← (byte) main::scroll#1 == (byte/word/signed word) 255 -Inversing boolean not (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' from (boolean~) main::$9 ← (byte) main::c#0 == (byte) '@' +Inversing boolean not (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' from (boolean~) main::$8 ← (byte) main::c#0 == (byte) '@' Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -1239,11 +1230,10 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@5/(byte[]) main::line#1 main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte*) RASTER#10 ← phi( main::@5/(byte*) RASTER#12 ) @@ -1254,8 +1244,8 @@ main::@10: scope:[main] from main::@5 (byte[]) main::line#4 ← phi( main::@5/(byte[]) main::line#1 ) (byte*) main::nxt#3 ← phi( main::@5/(byte*) main::nxt#5 ) (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) TEXT#13 ← phi( main::@10/(byte*) TEXT#4 main::@11/(byte*) TEXT#2 ) @@ -1440,16 +1430,15 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@5/(byte[]) main::line#1 main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) TEXT#13 ← phi( main::@10/(byte*) TEXT#2 main::@11/(byte*) TEXT#2 ) @@ -1595,16 +1584,15 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@5/(byte[]) main::line#1 main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#3 main::@11/(byte*) main::nxt#2 ) @@ -1761,16 +1749,15 @@ main::@5: scope:[main] from main::@5 main::@9 (byte[]) main::line#1 ← phi( main::@9/(byte[]) main::line#3 ) (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#1 *idx (byte~) main::$6 - *((byte[]) main::line#1 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#1 + (byte) main::i#2) ← *((byte[]) main::line#1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c#0 ← *((byte*) main::nxt#3) - (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#3 main::@11/(byte*) main::nxt#2 ) @@ -1891,16 +1878,15 @@ main::@9: scope:[main] from main::@8 main::@5: scope:[main] from main::@5 main::@9 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c#0 ← *((byte*) main::nxt#9) - (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(byte*) main::nxt#2 ) @@ -1994,16 +1980,15 @@ main::@9: scope:[main] from main::@8 main::@5: scope:[main] from main::@5 main::@9 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 - (boolean~) main::$8 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 - if((boolean~) main::$8) goto main::@5 + (boolean~) main::$7 ← (byte) main::i#1 != (byte/signed byte/word/signed word) 39 + if((boolean~) main::$7) goto main::@5 to:main::@10 main::@10: scope:[main] from main::@5 (byte) main::c#0 ← *((byte*) main::nxt#9) - (boolean~) main::$10 ← (byte) main::c#0 != (byte) '@' - if((boolean~) main::$10) goto main::@6 + (boolean~) main::$9 ← (byte) main::c#0 != (byte) '@' + if((boolean~) main::$9) goto main::@6 to:main::@11 main::@6: scope:[main] from main::@10 main::@11 (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(byte*) main::nxt#2 ) @@ -2039,8 +2024,8 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 Simple Condition (boolean~) main::$2 if(*((byte*) RASTER#1)!=(byte/word/signed word) 254) goto main::@2 Simple Condition (boolean~) main::$3 if(*((byte*) RASTER#1)!=(byte/word/signed word) 255) goto main::@3 Simple Condition (boolean~) main::$5 if((byte) main::scroll#1!=(byte/word/signed word) 255) goto main::@4 -Simple Condition (boolean~) main::$8 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 -Simple Condition (boolean~) main::$10 if((byte) main::c#0!=(byte) '@') goto main::@6 +Simple Condition (boolean~) main::$7 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 +Simple Condition (boolean~) main::$9 if((byte) main::c#0!=(byte) '@') goto main::@6 Simple Condition (boolean~) fillscreen::$1 if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @@ -2095,8 +2080,7 @@ main::@9: scope:[main] from main::@8 main::@5: scope:[main] from main::@5 main::@9 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2187,8 +2171,7 @@ main::@9: scope:[main] from main::@8 main::@5: scope:[main] from main::@5 main::@9 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2270,8 +2253,7 @@ main::@9: scope:[main] from main::@8 main::@5: scope:[main] from main::@5 main::@9 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2351,8 +2333,7 @@ main::@9: scope:[main] from main::@8 main::@5: scope:[main] from main::@5 main::@9 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2428,8 +2409,7 @@ main::@4: scope:[main] from main::@6 main::@8 main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2512,8 +2492,7 @@ main::@4: scope:[main] from main::@6 main::@8 main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (byte[]) main::line#8 *idx (byte~) main::$6 - *((byte[]) main::line#8 + (byte) main::i#2) ← (byte~) main::$7 + *((byte[]) main::line#8 + (byte) main::i#2) ← *((byte[]) main::line#8 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2585,8 +2564,7 @@ main::@4: scope:[main] from main::@6 main::@8 main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (const byte[]) main::line#0 *idx (byte~) main::$6 - *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 + *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2654,8 +2632,7 @@ main::@4: scope:[main] from main::@6 main::@8 main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word) 1 - (byte~) main::$7 ← (const byte[]) main::line#0 *idx (byte~) main::$6 - *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 + *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2692,9 +2669,9 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 @end: scope:[] from @2 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Consolidated referenced array index constant in assignment main::$7 Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Consolidated assigned array index constant in assignment *(main::line#0+39) +Consolidated array index constant in assignment *(main::line#0+1 + main::$6) +Consolidated array index constant in *(main::line#0+39) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -2725,8 +2702,7 @@ main::@4: scope:[main] from main::@6 main::@8 main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(const byte) main::i#0 ) (byte~) main::$6 ← (byte) main::i#2 - (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte~) main::$6 - *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 + *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte~) main::$6) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2793,8 +2769,7 @@ main::@4: scope:[main] from main::@6 main::@8 to:main::@return main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(const byte) main::i#0 ) - (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 - *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 + *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2830,10 +2805,6 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1 to:@end @end: scope:[] from @2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2 Inlining constant with var siblings (const byte) main::scroll#0 Inlining constant with var siblings (const byte) main::scroll#0 Inlining constant with var siblings (const byte) main::scroll#0 @@ -2886,8 +2857,7 @@ main::@4: scope:[main] from main::@6 main::@8 to:main::@return main::@5: scope:[main] from main::@5 main::@8 (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte/signed byte/word/signed word) 0 ) - (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 - *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 + *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 to:main::@10 @@ -2947,7 +2917,6 @@ FINAL SYMBOL TABLE (const byte) fillscreen::fill#0 = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() -(byte~) main::$7 (label) main::@10 (label) main::@11 (label) main::@2 @@ -3008,8 +2977,7 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@15 main::@8 (byte) main::i#2 ← phi( main::@15/(byte~) main::i#3 main::@8/(byte/signed byte/word/signed word) 0 ) - (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 - *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 + *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) (byte) main::i#1 ← ++ (byte) main::i#2 if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@15 to:main::@10 @@ -3114,78 +3082,77 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@15 main::@8 [12] (byte) main::i#2 ← phi( main::@15/(byte~) main::i#3 main::@8/(byte/signed byte/word/signed word) 0 ) [ main::nxt#9 main::i#2 ] - [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] - [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] - [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] - [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@15 [ main::nxt#9 main::i#1 ] + [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] + [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] + [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@15 [ main::nxt#9 main::i#1 ] to:main::@10 main::@10: scope:[main] from main::@5 - [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] - [18] if((byte) main::c#0!=(byte) '@') goto main::@16 [ main::nxt#9 main::c#0 ] + [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] + [17] if((byte) main::c#0!=(byte) '@') goto main::@16 [ main::nxt#9 main::c#0 ] to:main::@11 main::@11: scope:[main] from main::@10 - [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] - [20] (byte~) main::c#4 ← (byte) main::c#1 [ main::c#4 ] + [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] + [19] (byte~) main::c#4 ← (byte) main::c#1 [ main::c#4 ] to:main::@6 main::@6: scope:[main] from main::@11 main::@16 - [21] (byte*) main::nxt#4 ← phi( main::@16/(byte*~) main::nxt#13 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] - [21] (byte) main::c#2 ← phi( main::@16/(byte~) main::c#3 main::@11/(byte~) main::c#4 ) [ main::c#2 main::nxt#4 ] - [22] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] - [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] - [24] (byte*~) main::nxt#14 ← (byte*) main::nxt#1 [ main::nxt#14 ] + [20] (byte*) main::nxt#4 ← phi( main::@16/(byte*~) main::nxt#13 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] + [20] (byte) main::c#2 ← phi( main::@16/(byte~) main::c#3 main::@11/(byte~) main::c#4 ) [ main::c#2 main::nxt#4 ] + [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] + [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] + [23] (byte*~) main::nxt#14 ← (byte*) main::nxt#1 [ main::nxt#14 ] to:main::@4 main::@4: scope:[main] from main::@17 main::@6 - [25] (byte*) main::nxt#10 ← phi( main::@6/(byte*~) main::nxt#14 main::@17/(byte*~) main::nxt#15 ) [ main::scroll#10 main::nxt#10 ] - [25] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@17/(byte~) main::scroll#13 ) [ main::scroll#10 main::nxt#10 ] - [26] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] - [27] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] - [28] if(true) goto main::@14 [ main::scroll#10 main::nxt#10 ] + [24] (byte*) main::nxt#10 ← phi( main::@6/(byte*~) main::nxt#14 main::@17/(byte*~) main::nxt#15 ) [ main::scroll#10 main::nxt#10 ] + [24] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@17/(byte~) main::scroll#13 ) [ main::scroll#10 main::nxt#10 ] + [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] + [26] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] + [27] if(true) goto main::@14 [ main::scroll#10 main::nxt#10 ] to:main::@return main::@return: scope:[main] from main::@4 - [29] return [ ] + [28] return [ ] to:@return main::@14: scope:[main] from main::@4 - [30] (byte~) main::scroll#12 ← (byte) main::scroll#10 [ main::scroll#12 main::nxt#10 ] - [31] (byte*~) main::nxt#12 ← (byte*) main::nxt#10 [ main::scroll#12 main::nxt#12 ] + [29] (byte~) main::scroll#12 ← (byte) main::scroll#10 [ main::scroll#12 main::nxt#10 ] + [30] (byte*~) main::nxt#12 ← (byte*) main::nxt#10 [ main::scroll#12 main::nxt#12 ] to:main::@2 main::@16: scope:[main] from main::@10 - [32] (byte~) main::c#3 ← (byte) main::c#0 [ main::nxt#9 main::c#3 ] - [33] (byte*~) main::nxt#13 ← (byte*) main::nxt#9 [ main::c#3 main::nxt#13 ] + [31] (byte~) main::c#3 ← (byte) main::c#0 [ main::nxt#9 main::c#3 ] + [32] (byte*~) main::nxt#13 ← (byte*) main::nxt#9 [ main::c#3 main::nxt#13 ] to:main::@6 main::@15: scope:[main] from main::@5 - [34] (byte~) main::i#3 ← (byte) main::i#1 [ main::nxt#9 main::i#3 ] + [33] (byte~) main::i#3 ← (byte) main::i#1 [ main::nxt#9 main::i#3 ] to:main::@5 main::@17: scope:[main] from main::@8 - [35] (byte~) main::scroll#13 ← (byte) main::scroll#1 [ main::nxt#9 main::scroll#13 ] - [36] (byte*~) main::nxt#15 ← (byte*) main::nxt#9 [ main::scroll#13 main::nxt#15 ] + [34] (byte~) main::scroll#13 ← (byte) main::scroll#1 [ main::nxt#9 main::scroll#13 ] + [35] (byte*~) main::nxt#15 ← (byte*) main::nxt#9 [ main::scroll#13 main::nxt#15 ] to:main::@4 fillscreen: scope:[fillscreen] from main - [37] phi() [ ] + [36] phi() [ ] to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@3 - [38] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) [ fillscreen::cursor#2 ] - [39] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] - [40] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] - [41] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] + [37] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@3/(byte*~) fillscreen::cursor#3 ) [ fillscreen::cursor#2 ] + [38] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] + [39] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] + [40] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@3 [ fillscreen::cursor#1 ] to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [42] return [ ] + [41] return [ ] to:@return fillscreen::@3: scope:[fillscreen] from fillscreen::@1 - [43] (byte*~) fillscreen::cursor#3 ← (byte*) fillscreen::cursor#1 [ fillscreen::cursor#3 ] + [42] (byte*~) fillscreen::cursor#3 ← (byte*) fillscreen::cursor#1 [ fillscreen::cursor#3 ] to:fillscreen::@1 Created 8 initial phi equivalence classes -Coalesced [20] main::c#4 ← main::c#1 -Coalesced [24] main::nxt#14 ← main::nxt#1 -Coalesced [30] main::scroll#12 ← main::scroll#10 -Coalesced [31] main::nxt#12 ← main::nxt#10 -Coalesced [32] main::c#3 ← main::c#0 -Coalesced [33] main::nxt#13 ← main::nxt#9 -Coalesced [34] main::i#3 ← main::i#1 -Coalesced [35] main::scroll#13 ← main::scroll#1 -Coalesced (already) [36] main::nxt#15 ← main::nxt#9 -Coalesced [43] fillscreen::cursor#3 ← fillscreen::cursor#1 +Coalesced [19] main::c#4 ← main::c#1 +Coalesced [23] main::nxt#14 ← main::nxt#1 +Coalesced [29] main::scroll#12 ← main::scroll#10 +Coalesced [30] main::nxt#12 ← main::nxt#10 +Coalesced [31] main::c#3 ← main::c#0 +Coalesced [32] main::nxt#13 ← main::nxt#9 +Coalesced [33] main::i#3 ← main::i#1 +Coalesced [34] main::scroll#13 ← main::scroll#1 +Coalesced (already) [35] main::nxt#15 ← main::nxt#9 +Coalesced [42] fillscreen::cursor#3 ← fillscreen::cursor#1 Coalesced down to 5 phi equivalence classes Culled Empty Block (label) main::@14 Culled Empty Block (label) main::@16 @@ -3234,45 +3201,44 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@5 main::@8 [12] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte/signed byte/word/signed word) 0 ) [ main::nxt#9 main::i#2 ] - [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] - [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] - [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] - [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] + [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] + [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] + [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] to:main::@10 main::@10: scope:[main] from main::@5 - [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] - [18] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] + [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] + [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] to:main::@11 main::@11: scope:[main] from main::@10 - [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] + [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] to:main::@6 main::@6: scope:[main] from main::@10 main::@11 - [20] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] - [20] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] - [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] - [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] + [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] + [19] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] + [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] + [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] to:main::@4 main::@4: scope:[main] from main::@6 main::@8 - [23] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] - [23] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] - [24] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] - [25] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] - [26] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] + [22] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] + [22] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] + [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] + [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] + [25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] to:main::@return main::@return: scope:[main] from main::@4 - [27] return [ ] + [26] return [ ] to:@return fillscreen: scope:[fillscreen] from main - [28] phi() [ ] + [27] phi() [ ] to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 - [29] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] - [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] - [31] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] - [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] + [28] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] + [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] + [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] + [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [33] return [ ] + [32] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -3304,45 +3270,44 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@5 main::@8 [12] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte/signed byte/word/signed word) 0 ) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) - [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:2 [ main::nxt#9 main::i#2 main::$7 ] ) - [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) - [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) - [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) + [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) + [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) + [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) to:main::@10 main::@10: scope:[main] from main::@5 - [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) - [18] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) + [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) + [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) to:main::@11 main::@11: scope:[main] from main::@10 - [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) + [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) to:main::@6 main::@6: scope:[main] from main::@10 main::@11 - [20] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) - [20] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) - [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) - [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) + [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) + [19] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) + [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) + [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) to:main::@4 main::@4: scope:[main] from main::@6 main::@8 - [23] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [23] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [24] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [25] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) - [26] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [22] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [22] (byte) main::scroll#10 ← phi( main::@6/(byte/signed byte/word/signed word) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) + [25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) to:main::@return main::@return: scope:[main] from main::@4 - [27] return [ ] ( main:2 [ ] ) + [26] return [ ] ( main:2 [ ] ) to:@return fillscreen: scope:[fillscreen] from main - [28] phi() [ ] ( main:2::fillscreen:5 [ ] ) + [27] phi() [ ] ( main:2::fillscreen:5 [ ] ) to:fillscreen::@1 fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1 - [29] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) - [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) - [31] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) - [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) + [28] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) + [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) + [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) + [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) to:fillscreen::@return fillscreen::@return: scope:[fillscreen] from fillscreen::@1 - [33] return [ ] ( main:2::fillscreen:5 [ ] ) + [32] return [ ] ( main:2::fillscreen:5 [ ] ) to:@return DOMINATORS @@ -3409,20 +3374,19 @@ VARIABLE REGISTER WEIGHTS (byte) fillscreen::fill (byte*) fillscreen::screen (void()) main() -(byte~) main::$7 202.0 (byte) main::c (byte) main::c#0 16.5 (byte) main::c#1 22.0 (byte) main::c#2 33.0 (byte) main::i (byte) main::i#1 151.5 -(byte) main::i#2 134.66666666666666 +(byte) main::i#2 202.0 (byte[]) main::line (byte*) main::nxt (byte*) main::nxt#1 22.0 (byte*) main::nxt#10 8.25 (byte*) main::nxt#4 11.0 -(byte*) main::nxt#9 3.3846153846153846 +(byte*) main::nxt#9 3.6666666666666665 (byte) main::scroll (byte) main::scroll#1 16.5 (byte) main::scroll#10 8.25 @@ -3434,20 +3398,17 @@ Initial phi equivalence classes [ main::c#2 main::c#0 main::c#1 ] [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Added variable main::$7 to zero page equivalence class [ main::$7 ] Complete equivalence classes [ main::scroll#7 main::scroll#10 main::scroll#1 ] [ main::i#2 main::i#1 ] [ main::c#2 main::c#0 main::c#1 ] [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] [ fillscreen::cursor#2 fillscreen::cursor#1 ] -[ main::$7 ] Allocated zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] Allocated zp ZP_BYTE:3 [ main::i#2 main::i#1 ] Allocated zp ZP_BYTE:4 [ main::c#2 main::c#0 main::c#1 ] Allocated zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] Allocated zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Allocated zp ZP_BYTE:9 [ main::$7 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -3478,13 +3439,12 @@ bend: //SEG9 main main: { .const line = SCREEN+$28 - .label _7 = 9 .label scroll = 2 .label i = 3 .label c = 4 .label nxt = 5 //SEG10 [5] call fillscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [28] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [27] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] @@ -3542,116 +3502,112 @@ main: { jmp b5 //SEG31 main::@5 b5: - //SEG32 [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:2 [ main::nxt#9 main::i#2 main::$7 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG32 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line+1,x - sta _7 - //SEG33 [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _7 - ldx i sta line,x - //SEG34 [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuz1=_inc_vbuz1 + ldx i + //SEG33 [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG35 [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$27 bne b5_from_b5 jmp b10 - //SEG36 main::@10 + //SEG35 main::@10 b10: - //SEG37 [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuz1=_deref_pbuz2 + //SEG36 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuz1=_deref_pbuz2 ldy #0 lda (nxt),y sta c - //SEG38 [18] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG37 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuz1_neq_vbuc1_then_la1 lda c cmp #'@' bne b6_from_b10 jmp b11 - //SEG39 main::@11 + //SEG38 main::@11 b11: - //SEG40 [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuz1=_deref_pbuc1 + //SEG39 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuz1=_deref_pbuc1 lda TEXT sta c - //SEG41 [20] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG40 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG42 [20] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG41 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG43 [20] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG44 [20] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG43 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] b6_from_b10: - //SEG45 [20] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy - //SEG46 [20] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy + //SEG44 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy + //SEG45 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy jmp b6 - //SEG47 main::@6 + //SEG46 main::@6 b6: - //SEG48 [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuz1 + //SEG47 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuz1 lda c sta line+$27 - //SEG49 [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG48 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [23] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG49 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG51 [23] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG52 [23] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- vbuz1=vbuc1 + //SEG50 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG51 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- vbuz1=vbuc1 lda #7 sta scroll jmp b4 - //SEG53 [23] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG52 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] b4_from_b8: - //SEG54 [23] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy - //SEG55 [23] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy + //SEG53 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy + //SEG54 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy jmp b4 - //SEG56 main::@4 + //SEG55 main::@4 b4: - //SEG57 [24] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=vbuz1 + //SEG56 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=vbuz1 lda scroll sta SCROLL - //SEG58 [25] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG57 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG59 [26] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- true_then_la1 + //SEG58 [25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- true_then_la1 jmp b2_from_b4 jmp breturn - //SEG60 main::@return + //SEG59 main::@return breturn: - //SEG61 [27] return [ ] ( main:2 [ ] ) + //SEG60 [26] return [ ] ( main:2 [ ] ) rts } -//SEG62 fillscreen +//SEG61 fillscreen fillscreen: { .const fill = $20 .label cursor = 7 - //SEG63 [29] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG62 [28] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG64 [29] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG63 [28] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG65 [29] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG64 [28] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG66 [29] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG65 [28] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG67 fillscreen::@1 + //SEG66 fillscreen::@1 b1: - //SEG68 [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #fill sta (cursor),y - //SEG69 [31] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG70 [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG69 [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -3661,9 +3617,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG71 fillscreen::@return + //SEG70 fillscreen::@return breturn: - //SEG72 [33] return [ ] ( main:2::fillscreen:5 [ ] ) + //SEG71 [32] return [ ] ( main:2::fillscreen:5 [ ] ) rts } @@ -3671,27 +3627,29 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a -Statement [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y -Statement [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#2 main::i#1 ] +Statement [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y +Statement [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a -Statement [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y -Statement [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) always clobbers reg byte a +Statement [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y +Statement [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:3 [ main::i#2 main::i#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::c#2 main::c#0 main::c#1 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] : zp ZP_WORD:5 , Potential registers zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] : zp ZP_WORD:7 , -Potential registers zp ZP_BYTE:9 [ main::$7 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [main] 286.17: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] 202: zp ZP_BYTE:9 [ main::$7 ] 71.5: zp ZP_BYTE:4 [ main::c#2 main::c#0 main::c#1 ] 44.63: zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] 30.25: zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] +Uplift Scope [main] 353.5: zp ZP_BYTE:3 [ main::i#2 main::i#1 ] 71.5: zp ZP_BYTE:4 [ main::c#2 main::c#0 main::c#1 ] 44.92: zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] 30.25: zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] Uplift Scope [fillscreen] 33: zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplift Scope [] -Uplifting [main] best 8770 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$7 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] +Uplifting [main] best 8770 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] Uplifting [fillscreen] best 8770 combination zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplifting [] best 8770 combination Coalescing zero page register [ zp ZP_WORD:5 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 ] ] with [ zp ZP_WORD:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] @@ -3729,7 +3687,7 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG10 [5] call fillscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [28] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [27] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] @@ -3784,106 +3742,105 @@ main: { jmp b5 //SEG31 main::@5 b5: - //SEG32 [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:2 [ main::nxt#9 main::i#2 main::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG32 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line+1,x - //SEG33 [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line,x - //SEG34 [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG33 [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG35 [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b5_from_b5 jmp b10 - //SEG36 main::@10 + //SEG35 main::@10 b10: - //SEG37 [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx=_deref_pbuz1 + //SEG36 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx=_deref_pbuz1 ldy #0 lda (nxt),y tax - //SEG38 [18] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG37 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #'@' bne b6_from_b10 jmp b11 - //SEG39 main::@11 + //SEG38 main::@11 b11: - //SEG40 [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 + //SEG39 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 ldx TEXT - //SEG41 [20] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG40 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG42 [20] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG41 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG43 [20] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG44 [20] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG43 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] b6_from_b10: - //SEG45 [20] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy - //SEG46 [20] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy + //SEG44 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy + //SEG45 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy jmp b6 - //SEG47 main::@6 + //SEG46 main::@6 b6: - //SEG48 [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx + //SEG47 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx stx line+$27 - //SEG49 [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG48 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [23] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG49 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG51 [23] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG52 [23] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 + //SEG50 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG51 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 ldx #7 jmp b4 - //SEG53 [23] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG52 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] b4_from_b8: - //SEG54 [23] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy - //SEG55 [23] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy + //SEG53 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy + //SEG54 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy jmp b4 - //SEG56 main::@4 + //SEG55 main::@4 b4: - //SEG57 [24] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=vbuxx + //SEG56 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=vbuxx stx SCROLL - //SEG58 [25] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG57 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG59 [26] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- true_then_la1 + //SEG58 [25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- true_then_la1 jmp b2_from_b4 jmp breturn - //SEG60 main::@return + //SEG59 main::@return breturn: - //SEG61 [27] return [ ] ( main:2 [ ] ) + //SEG60 [26] return [ ] ( main:2 [ ] ) rts } -//SEG62 fillscreen +//SEG61 fillscreen fillscreen: { .const fill = $20 .label cursor = 2 - //SEG63 [29] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG62 [28] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG64 [29] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG63 [28] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG65 [29] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG64 [28] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG66 [29] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG65 [28] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG67 fillscreen::@1 + //SEG66 fillscreen::@1 b1: - //SEG68 [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #fill sta (cursor),y - //SEG69 [31] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG70 [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG69 [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -3893,9 +3850,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG71 fillscreen::@return + //SEG70 fillscreen::@return breturn: - //SEG72 [33] return [ ] ( main:2::fillscreen:5 [ ] ) + //SEG71 [32] return [ ] ( main:2::fillscreen:5 [ ] ) rts } @@ -3985,7 +3942,6 @@ FINAL SYMBOL TABLE (const byte) fillscreen::fill#0 fill = (byte/signed byte/word/signed word) 32 (byte*) fillscreen::screen (void()) main() -(byte~) main::$7 reg byte a 202.0 (label) main::@10 (label) main::@11 (label) main::@2 @@ -4001,14 +3957,14 @@ FINAL SYMBOL TABLE (byte) main::c#2 reg byte x 33.0 (byte) main::i (byte) main::i#1 reg byte x 151.5 -(byte) main::i#2 reg byte x 134.66666666666666 +(byte) main::i#2 reg byte x 202.0 (byte[]) main::line (const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 (byte*) main::nxt (byte*) main::nxt#1 nxt zp ZP_WORD:2 22.0 (byte*) main::nxt#10 nxt zp ZP_WORD:2 8.25 (byte*) main::nxt#4 nxt zp ZP_WORD:2 11.0 -(byte*) main::nxt#9 nxt zp ZP_WORD:2 3.3846153846153846 +(byte*) main::nxt#9 nxt zp ZP_WORD:2 3.6666666666666665 (byte) main::scroll (byte) main::scroll#1 reg byte x 16.5 (byte) main::scroll#10 reg byte x 8.25 @@ -4018,7 +3974,6 @@ reg byte x [ main::scroll#7 main::scroll#10 main::scroll#1 ] reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_WORD:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] -reg byte a [ main::$7 ] FINAL CODE //SEG0 Basic Upstart @@ -4044,7 +3999,7 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG10 [5] call fillscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [28] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [27] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 @@ -4085,87 +4040,86 @@ main: { //SEG30 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: - //SEG32 [13] (byte~) main::$7 ← (const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$7 ] ( main:2 [ main::nxt#9 main::i#2 main::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG32 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line+1,x - //SEG33 [14] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$7 [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line,x - //SEG34 [15] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG33 [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG35 [16] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG34 [15] if((byte) main::i#1!=(byte/signed byte/word/signed word) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b5 - //SEG36 main::@10 - //SEG37 [17] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx=_deref_pbuz1 + //SEG35 main::@10 + //SEG36 [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx=_deref_pbuz1 ldy #0 lda (nxt),y tax - //SEG38 [18] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG37 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #'@' bne b6 - //SEG39 main::@11 - //SEG40 [19] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 + //SEG38 main::@11 + //SEG39 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 ldx TEXT - //SEG41 [20] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG42 [20] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG40 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG41 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG43 [20] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy - //SEG44 [20] phi from main::@10 to main::@6 [phi:main::@10->main::@6] - //SEG45 [20] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy - //SEG46 [20] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy - //SEG47 main::@6 + //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG43 [19] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG44 [19] phi (byte*) main::nxt#4 = (byte*) main::nxt#9 [phi:main::@10->main::@6#0] -- register_copy + //SEG45 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy + //SEG46 main::@6 b6: - //SEG48 [21] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx + //SEG47 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx stx line+$27 - //SEG49 [22] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG48 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [23] phi from main::@6 to main::@4 [phi:main::@6->main::@4] - //SEG51 [23] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy - //SEG52 [23] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 + //SEG49 [22] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG50 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG51 [22] phi (byte) main::scroll#10 = (byte/signed byte/word/signed word) 7 [phi:main::@6->main::@4#1] -- vbuxx=vbuc1 ldx #7 - //SEG53 [23] phi from main::@8 to main::@4 [phi:main::@8->main::@4] - //SEG54 [23] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy - //SEG55 [23] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy - //SEG56 main::@4 + //SEG52 [22] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG53 [22] phi (byte*) main::nxt#10 = (byte*) main::nxt#9 [phi:main::@8->main::@4#0] -- register_copy + //SEG54 [22] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy + //SEG55 main::@4 b4: - //SEG57 [24] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=vbuxx + //SEG56 [23] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=vbuxx stx SCROLL - //SEG58 [25] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG57 [24] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 dec BGCOL - //SEG59 [26] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- true_then_la1 + //SEG58 [25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:2 [ main::scroll#10 main::nxt#10 ] ) -- true_then_la1 jmp b2 - //SEG60 main::@return - //SEG61 [27] return [ ] ( main:2 [ ] ) + //SEG59 main::@return + //SEG60 [26] return [ ] ( main:2 [ ] ) } -//SEG62 fillscreen +//SEG61 fillscreen fillscreen: { .const fill = $20 .label cursor = 2 - //SEG63 [29] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG64 [29] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG62 [28] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG63 [28] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG65 [29] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG66 [29] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG67 fillscreen::@1 + //SEG64 [28] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG65 [28] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG66 fillscreen::@1 b1: - //SEG68 [30] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG67 [29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #fill sta (cursor),y - //SEG69 [31] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG68 [30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG70 [32] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG69 [31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -4174,8 +4128,8 @@ fillscreen: { cmp #fillscreen] + //SEG11 [66] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] @@ -8222,7 +7900,7 @@ scroll_soft: { scroll_bit: { .label _3 = $11 .label _4 = $14 - .label _10 = $17 + .label _9 = $17 .label c = $12 .label bits = $16 .label sc = 7 @@ -8327,16 +8005,16 @@ scroll_bit: { jmp b2 //SEG87 scroll_bit::@2 b2: - //SEG88 [35] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG88 [35] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 ldy r lda (current_chargen),y sta bits - //SEG89 [36] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- vbuz1=vbuz2_band_vbuz3 + //SEG89 [36] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ) -- vbuz1=vbuz2_band_vbuz3 lda bits and current_bit - sta _10 - //SEG90 [37] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- vbuz1_eq_0_then_la1 - lda _10 + sta _9 + //SEG90 [37] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- vbuz1_eq_0_then_la1 + lda _9 beq b3_from_b2 //SEG91 [38] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] b5_from_b2: @@ -8399,14 +8077,6 @@ scroll_hard: { .const line5 = SCREEN+$28*5 .const line6 = SCREEN+$28*6 .const line7 = SCREEN+$28*7 - .label _17 = $18 - .label _19 = $19 - .label _21 = $1a - .label _23 = $1b - .label _25 = $1c - .label _27 = $1d - .label _29 = $1e - .label _31 = $1f .label i = $a //SEG108 [48] phi from scroll_hard to scroll_hard::@1 [phi:scroll_hard->scroll_hard::@1] b1_from_scroll_hard: @@ -8420,156 +8090,124 @@ scroll_hard: { jmp b1 //SEG112 scroll_hard::@1 b1: - //SEG113 [49] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx i + //SEG113 [49] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line0+1,x - sta _17 - //SEG114 [50] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _17 - ldx i sta line0,x - //SEG115 [51] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG114 [50] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line1+1,x - sta _19 - //SEG116 [52] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _19 - ldx i sta line1,x - //SEG117 [53] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG115 [51] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line2+1,x - sta _21 - //SEG118 [54] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _21 - ldx i sta line2,x - //SEG119 [55] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG116 [52] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line3+1,x - sta _23 - //SEG120 [56] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _23 - ldx i sta line3,x - //SEG121 [57] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG117 [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line4+1,x - sta _25 - //SEG122 [58] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _25 - ldx i sta line4,x - //SEG123 [59] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG118 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line5+1,x - sta _27 - //SEG124 [60] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _27 - ldx i sta line5,x - //SEG125 [61] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG119 [55] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line6+1,x - sta _29 - //SEG126 [62] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _29 - ldx i sta line6,x - //SEG127 [63] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i + //SEG120 [56] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 lda line7+1,x - sta _31 - //SEG128 [64] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _31 - ldx i sta line7,x - //SEG129 [65] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuz1=_inc_vbuz1 + ldx i + //SEG121 [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG130 [66] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG122 [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$27 bne b1_from_b1 jmp breturn - //SEG131 scroll_hard::@return + //SEG123 scroll_hard::@return breturn: - //SEG132 [67] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG124 [59] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG133 next_char +//SEG125 next_char next_char: { .label return = $10 .label c = $d .label return_1 = $d - //SEG134 [68] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuz1=_deref_pbuz2 + //SEG126 [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuz1=_deref_pbuz2 ldy #0 lda (nxt),y sta c - //SEG135 [69] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG127 [61] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuz1_neq_vbuc1_then_la1 lda c cmp #'@' bne b1_from_next_char jmp b2 - //SEG136 next_char::@2 + //SEG128 next_char::@2 b2: - //SEG137 [70] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] ) -- vbuz1=_deref_pbuc1 + //SEG129 [62] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] ) -- vbuz1=_deref_pbuc1 lda TEXT sta c - //SEG138 [71] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG130 [63] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG139 [71] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG140 [71] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG131 [63] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG132 [63] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 jmp b1 - //SEG141 [71] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG133 [63] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG142 [71] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG143 [71] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG134 [63] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG135 [63] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy jmp b1 - //SEG144 next_char::@1 + //SEG136 next_char::@1 b1: - //SEG145 [72] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) -- pbuz1=_inc_pbuz1 + //SEG137 [64] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: jmp breturn - //SEG146 next_char::@return + //SEG138 next_char::@return breturn: - //SEG147 [73] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) + //SEG139 [65] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) rts } -//SEG148 fillscreen +//SEG140 fillscreen fillscreen: { .const fill = $20 .label cursor = $e - //SEG149 [75] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG141 [67] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG150 [75] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG142 [67] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG151 [75] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG143 [67] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG152 [75] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG144 [67] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG153 fillscreen::@1 + //SEG145 fillscreen::@1 b1: - //SEG154 [76] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #fill sta (cursor),y - //SEG155 [77] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG156 [78] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8579,9 +8217,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG157 fillscreen::@return + //SEG149 fillscreen::@return breturn: - //SEG158 [79] return [ ] ( main:2::fillscreen:5 [ ] ) + //SEG150 [71] return [ ] ( main:2::fillscreen:5 [ ] ) rts } @@ -8594,38 +8232,55 @@ Statement [27] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scro Statement [28] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] ) always clobbers reg byte a Statement [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) always clobbers reg byte a Statement [33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a -Statement [35] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a +Statement [35] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] -Statement [36] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) always clobbers reg byte a +Statement [36] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ) always clobbers reg byte a Statement [40] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] Statement [41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a Statement [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a -Statement [68] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y -Statement [76] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [78] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [49] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] +Statement [50] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [51] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [52] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [55] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [56] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@3 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) always clobbers reg byte a Statement [27] (word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3 [ scroll_bit::c#0 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::c#0 nxt#19 ] ) always clobbers reg byte a Statement [28] (word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word) 3 [ scroll_bit::$4 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ scroll_bit::$4 nxt#19 ] ) always clobbers reg byte a Statement [29] (byte*) current_chargen#5 ← (const byte*) CHARGEN#0 + (word~) scroll_bit::$4 [ current_chargen#5 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_chargen#5 nxt#19 ] ) always clobbers reg byte a Statement [33] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a -Statement [35] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [36] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) always clobbers reg byte a +Statement [35] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [36] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ) always clobbers reg byte a Statement [40] *((byte*) scroll_bit::sc#2) ← (byte) scroll_bit::b#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) always clobbers reg byte y Statement [41] (byte*) scroll_bit::sc#1 ← (byte*) scroll_bit::sc#2 + (byte/signed byte/word/signed word) 40 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#1 ] ) always clobbers reg byte a Statement [44] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ current_bit#21 nxt#36 current_chargen#19 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 ] ) always clobbers reg byte a -Statement [68] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y -Statement [76] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y -Statement [78] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a +Statement [49] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [50] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [51] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [52] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [55] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [56] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) always clobbers reg byte a +Statement [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) always clobbers reg byte a reg byte y +Statement [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ scroll#18 scroll#10 scroll#3 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] : zp ZP_BYTE:3 , reg byte x , Potential registers zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] : zp ZP_WORD:4 , Potential registers zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] : zp ZP_BYTE:6 , reg byte x , Potential registers zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] : zp ZP_WORD:7 , Potential registers zp ZP_BYTE:9 [ scroll_bit::b#2 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] : zp ZP_BYTE:10 , reg byte x , reg byte y , Potential registers zp ZP_WORD:11 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] : zp ZP_WORD:11 , Potential registers zp ZP_BYTE:13 [ next_char::return#1 next_char::c#0 next_char::c#1 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] : zp ZP_WORD:14 , @@ -8634,38 +8289,24 @@ Potential registers zp ZP_BYTE:17 [ scroll_bit::$3 ] : zp ZP_BYTE:17 , reg byte Potential registers zp ZP_WORD:18 [ scroll_bit::c#0 ] : zp ZP_WORD:18 , Potential registers zp ZP_WORD:20 [ scroll_bit::$4 ] : zp ZP_WORD:20 , Potential registers zp ZP_BYTE:22 [ scroll_bit::bits#0 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:23 [ scroll_bit::$10 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ scroll_hard::$17 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ scroll_hard::$19 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ scroll_hard::$21 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ scroll_hard::$23 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ scroll_hard::$25 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:29 [ scroll_hard::$27 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ scroll_hard::$29 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ scroll_hard::$31 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ scroll_bit::$9 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [scroll_hard] 28.15: zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] 22: zp ZP_BYTE:24 [ scroll_hard::$17 ] 22: zp ZP_BYTE:25 [ scroll_hard::$19 ] 22: zp ZP_BYTE:26 [ scroll_hard::$21 ] 22: zp ZP_BYTE:27 [ scroll_hard::$23 ] 22: zp ZP_BYTE:28 [ scroll_hard::$25 ] 22: zp ZP_BYTE:29 [ scroll_hard::$27 ] 22: zp ZP_BYTE:30 [ scroll_hard::$29 ] 22: zp ZP_BYTE:31 [ scroll_hard::$31 ] -Uplift Scope [scroll_bit] 22: zp ZP_BYTE:22 [ scroll_bit::bits#0 ] 22: zp ZP_BYTE:23 [ scroll_bit::$10 ] 20.62: zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 12.05: zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 11: zp ZP_BYTE:9 [ scroll_bit::b#2 ] 4: zp ZP_BYTE:17 [ scroll_bit::$3 ] 4: zp ZP_WORD:18 [ scroll_bit::c#0 ] 4: zp ZP_WORD:20 [ scroll_bit::$4 ] +Uplift Scope [scroll_bit] 22: zp ZP_BYTE:22 [ scroll_bit::bits#0 ] 22: zp ZP_BYTE:23 [ scroll_bit::$9 ] 20.62: zp ZP_BYTE:6 [ scroll_bit::r#2 scroll_bit::r#1 ] 12.05: zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] 11: zp ZP_BYTE:9 [ scroll_bit::b#2 ] 4: zp ZP_BYTE:17 [ scroll_bit::$3 ] 4: zp ZP_WORD:18 [ scroll_bit::c#0 ] 4: zp ZP_WORD:20 [ scroll_bit::$4 ] +Uplift Scope [scroll_hard] 38.5: zp ZP_BYTE:10 [ scroll_hard::i#2 scroll_hard::i#1 ] Uplift Scope [] 9.11: zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] 8.92: zp ZP_WORD:11 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] 8.75: zp ZP_BYTE:2 [ scroll#18 scroll#10 scroll#3 ] 8.48: zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Uplift Scope [fillscreen] 33: zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] Uplift Scope [next_char] 8.5: zp ZP_BYTE:13 [ next_char::return#1 next_char::c#0 next_char::c#1 ] 4: zp ZP_BYTE:16 [ next_char::return#0 ] Uplift Scope [main] Uplift Scope [scroll_soft] -Uplift attempts [scroll_hard] 10000/262144 (limiting to 10000) -Uplifting [scroll_hard] best 9780 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] reg byte a [ scroll_hard::$17 ] reg byte a [ scroll_hard::$19 ] reg byte a [ scroll_hard::$21 ] reg byte a [ scroll_hard::$23 ] reg byte a [ scroll_hard::$25 ] reg byte a [ scroll_hard::$27 ] zp ZP_BYTE:30 [ scroll_hard::$29 ] zp ZP_BYTE:31 [ scroll_hard::$31 ] -Limited combination testing to 10000 combinations of 262144 possible. -Uplifting [scroll_bit] best 9544 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$10 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] zp ZP_WORD:20 [ scroll_bit::$4 ] -Uplifting [] best 9232 combination zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] zp ZP_WORD:11 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] reg byte x [ scroll#18 scroll#10 scroll#3 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] -Uplifting [fillscreen] best 9232 combination zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplifting [next_char] best 9214 combination reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] -Uplifting [main] best 9214 combination -Uplifting [scroll_soft] best 9214 combination -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ scroll_hard::$29 ] -Uplifting [scroll_hard] best 9154 combination reg byte a [ scroll_hard::$29 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ scroll_hard::$31 ] -Uplifting [scroll_hard] best 9094 combination reg byte a [ scroll_hard::$31 ] +Uplifting [scroll_bit] best 9754 combination reg byte a [ scroll_bit::bits#0 ] reg byte a [ scroll_bit::$9 ] reg byte x [ scroll_bit::r#2 scroll_bit::r#1 ] zp ZP_WORD:7 [ scroll_bit::sc#2 scroll_bit::sc#1 ] reg byte a [ scroll_bit::b#2 ] reg byte a [ scroll_bit::$3 ] zp ZP_WORD:18 [ scroll_bit::c#0 ] zp ZP_WORD:20 [ scroll_bit::$4 ] +Uplifting [scroll_hard] best 9424 combination reg byte x [ scroll_hard::i#2 scroll_hard::i#1 ] +Uplifting [] best 9112 combination zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] zp ZP_WORD:11 [ nxt#18 nxt#31 nxt#14 nxt#36 nxt#19 ] reg byte x [ scroll#18 scroll#10 scroll#3 ] zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] +Uplifting [fillscreen] best 9112 combination zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Uplifting [next_char] best 9094 combination reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] +Uplifting [main] best 9094 combination +Uplifting [scroll_soft] best 9094 combination Attempting to uplift remaining variables inzp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Uplifting [] best 9094 combination zp ZP_BYTE:3 [ current_bit#29 current_bit#12 current_bit#21 current_bit#5 ] Coalescing zero page register [ zp ZP_WORD:4 [ current_chargen#27 current_chargen#11 current_chargen#19 current_chargen#5 ] ] with [ zp ZP_WORD:14 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] @@ -8711,7 +8352,7 @@ bend: //SEG9 main main: { //SEG10 [5] call fillscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [74] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [66] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] @@ -8902,13 +8543,13 @@ scroll_bit: { jmp b2 //SEG87 scroll_bit::@2 b2: - //SEG88 [35] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- vbuaa=pbuz1_derefidx_vbuxx + //SEG88 [35] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- vbuaa=pbuz1_derefidx_vbuxx stx $ff ldy $ff lda (current_chargen),y - //SEG89 [36] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- vbuaa=vbuaa_band_vbuz1 + //SEG89 [36] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ) -- vbuaa=vbuaa_band_vbuz1 and current_bit - //SEG90 [37] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- vbuaa_eq_0_then_la1 + //SEG90 [37] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 //SEG91 [38] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] @@ -8979,117 +8620,109 @@ scroll_hard: { jmp b1 //SEG112 scroll_hard::@1 b1: - //SEG113 [49] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG113 [49] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line0+1,x - //SEG114 [50] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line0,x - //SEG115 [51] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG114 [50] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line1+1,x - //SEG116 [52] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line1,x - //SEG117 [53] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG115 [51] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line2+1,x - //SEG118 [54] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line2,x - //SEG119 [55] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG116 [52] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line3+1,x - //SEG120 [56] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line3,x - //SEG121 [57] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG117 [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line4+1,x - //SEG122 [58] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line4,x - //SEG123 [59] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG118 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line5+1,x - //SEG124 [60] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line5,x - //SEG125 [61] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG119 [55] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line6+1,x - //SEG126 [62] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line6,x - //SEG127 [63] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG120 [56] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line7+1,x - //SEG128 [64] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line7,x - //SEG129 [65] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG121 [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG130 [66] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG122 [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b1_from_b1 jmp breturn - //SEG131 scroll_hard::@return + //SEG123 scroll_hard::@return breturn: - //SEG132 [67] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG124 [59] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG133 next_char +//SEG125 next_char next_char: { - //SEG134 [68] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa=_deref_pbuz1 + //SEG126 [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa=_deref_pbuz1 ldy #0 lda (nxt),y - //SEG135 [69] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG127 [61] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b1_from_next_char jmp b2 - //SEG136 next_char::@2 + //SEG128 next_char::@2 b2: - //SEG137 [70] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 + //SEG129 [62] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 lda TEXT - //SEG138 [71] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG130 [63] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: - //SEG139 [71] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG140 [71] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG131 [63] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG132 [63] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 jmp b1 - //SEG141 [71] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG133 [63] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] b1_from_next_char: - //SEG142 [71] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG143 [71] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG134 [63] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG135 [63] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy jmp b1 - //SEG144 next_char::@1 + //SEG136 next_char::@1 b1: - //SEG145 [72] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) -- pbuz1=_inc_pbuz1 + //SEG137 [64] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: jmp breturn - //SEG146 next_char::@return + //SEG138 next_char::@return breturn: - //SEG147 [73] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) + //SEG139 [65] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) rts } -//SEG148 fillscreen +//SEG140 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG149 [75] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG141 [67] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG150 [75] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG142 [67] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 jmp b1 - //SEG151 [75] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG143 [67] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG152 [75] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG144 [67] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 - //SEG153 fillscreen::@1 + //SEG145 fillscreen::@1 b1: - //SEG154 [76] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #fill sta (cursor),y - //SEG155 [77] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG156 [78] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -9099,9 +8732,9 @@ fillscreen: { bcc b1_from_b1 !: jmp breturn - //SEG157 fillscreen::@return + //SEG149 fillscreen::@return breturn: - //SEG158 [79] return [ ] ( main:2::fillscreen:5 [ ] ) + //SEG150 [71] return [ ] ( main:2::fillscreen:5 [ ] ) rts } @@ -9268,9 +8901,9 @@ FINAL SYMBOL TABLE (byte) scroll#18 reg byte x 3.25 (byte) scroll#3 reg byte x 3.0 (void()) scroll_bit() -(byte~) scroll_bit::$10 reg byte a 22.0 (byte~) scroll_bit::$3 reg byte a 4.0 (word~) scroll_bit::$4 $4 zp ZP_WORD:3 4.0 +(byte~) scroll_bit::$9 reg byte a 22.0 (label) scroll_bit::@1 (label) scroll_bit::@2 (label) scroll_bit::@3 @@ -9293,19 +8926,11 @@ FINAL SYMBOL TABLE (byte*) scroll_bit::sc#1 sc zp ZP_WORD:5 7.333333333333333 (byte*) scroll_bit::sc#2 sc zp ZP_WORD:5 4.714285714285714 (void()) scroll_hard() -(byte~) scroll_hard::$17 reg byte a 22.0 -(byte~) scroll_hard::$19 reg byte a 22.0 -(byte~) scroll_hard::$21 reg byte a 22.0 -(byte~) scroll_hard::$23 reg byte a 22.0 -(byte~) scroll_hard::$25 reg byte a 22.0 -(byte~) scroll_hard::$27 reg byte a 22.0 -(byte~) scroll_hard::$29 reg byte a 22.0 -(byte~) scroll_hard::$31 reg byte a 22.0 (label) scroll_hard::@1 (label) scroll_hard::@return (byte) scroll_hard::i (byte) scroll_hard::i#1 reg byte x 16.5 -(byte) scroll_hard::i#2 reg byte x 11.647058823529411 +(byte) scroll_hard::i#2 reg byte x 21.999999999999993 (byte[]) scroll_hard::line0 (const byte[]) scroll_hard::line0#0 line0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40*(byte/signed byte/word/signed word) 0 (byte[]) scroll_hard::line1 @@ -9339,15 +8964,7 @@ reg byte a [ next_char::return#1 next_char::c#0 next_char::c#1 ] reg byte a [ next_char::return#0 ] reg byte a [ scroll_bit::$3 ] reg byte a [ scroll_bit::bits#0 ] -reg byte a [ scroll_bit::$10 ] -reg byte a [ scroll_hard::$17 ] -reg byte a [ scroll_hard::$19 ] -reg byte a [ scroll_hard::$21 ] -reg byte a [ scroll_hard::$23 ] -reg byte a [ scroll_hard::$25 ] -reg byte a [ scroll_hard::$27 ] -reg byte a [ scroll_hard::$29 ] -reg byte a [ scroll_hard::$31 ] +reg byte a [ scroll_bit::$9 ] FINAL CODE //SEG0 Basic Upstart @@ -9376,7 +8993,7 @@ FINAL CODE //SEG9 main main: { //SEG10 [5] call fillscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [74] phi from main to fillscreen [phi:main->fillscreen] + //SEG11 [66] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] //SEG13 [6] phi (byte*) current_chargen#27 = (const byte*) CHARGEN#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 @@ -9527,13 +9144,13 @@ scroll_bit: { //SEG86 [34] phi (byte) scroll_bit::r#2 = (byte) scroll_bit::r#1 [phi:scroll_bit::@3->scroll_bit::@2#1] -- register_copy //SEG87 scroll_bit::@2 b2: - //SEG88 [35] (byte) scroll_bit::bits#0 ← (byte*) current_chargen#19 *idx (byte) scroll_bit::r#2 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- vbuaa=pbuz1_derefidx_vbuxx + //SEG88 [35] (byte) scroll_bit::bits#0 ← *((byte*) current_chargen#19 + (byte) scroll_bit::r#2) [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::bits#0 ] ) -- vbuaa=pbuz1_derefidx_vbuxx stx $ff ldy $ff lda (current_chargen),y - //SEG89 [36] (byte~) scroll_bit::$10 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$10 ] ) -- vbuaa=vbuaa_band_vbuz1 + //SEG89 [36] (byte~) scroll_bit::$9 ← (byte) scroll_bit::bits#0 & (byte) current_bit#21 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 scroll_bit::$9 ] ) -- vbuaa=vbuaa_band_vbuz1 and current_bit - //SEG90 [37] if((byte~) scroll_bit::$10==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- vbuaa_eq_0_then_la1 + //SEG90 [37] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word) 0) goto scroll_bit::@3 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ( main:2::scroll_soft:10::scroll_bit:17 [ current_bit#21 nxt#36 current_chargen#19 scroll_bit::r#2 scroll_bit::sc#2 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b4 //SEG91 [38] phi from scroll_bit::@2 to scroll_bit::@5 [phi:scroll_bit::@2->scroll_bit::@5] @@ -9591,103 +9208,95 @@ scroll_hard: { //SEG111 [48] phi (byte) scroll_hard::i#2 = (byte) scroll_hard::i#1 [phi:scroll_hard::@1->scroll_hard::@1#0] -- register_copy //SEG112 scroll_hard::@1 b1: - //SEG113 [49] (byte~) scroll_hard::$17 ← (const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$17 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$17 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG113 [49] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line0#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line0+1,x - //SEG114 [50] *((const byte[]) scroll_hard::line0#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$17 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line0,x - //SEG115 [51] (byte~) scroll_hard::$19 ← (const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$19 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$19 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG114 [50] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line1#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line1+1,x - //SEG116 [52] *((const byte[]) scroll_hard::line1#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$19 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line1,x - //SEG117 [53] (byte~) scroll_hard::$21 ← (const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$21 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$21 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG115 [51] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line2#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line2+1,x - //SEG118 [54] *((const byte[]) scroll_hard::line2#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$21 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line2,x - //SEG119 [55] (byte~) scroll_hard::$23 ← (const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$23 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$23 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG116 [52] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line3#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line3+1,x - //SEG120 [56] *((const byte[]) scroll_hard::line3#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$23 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line3,x - //SEG121 [57] (byte~) scroll_hard::$25 ← (const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$25 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$25 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG117 [53] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line4#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line4+1,x - //SEG122 [58] *((const byte[]) scroll_hard::line4#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$25 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line4,x - //SEG123 [59] (byte~) scroll_hard::$27 ← (const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$27 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$27 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG118 [54] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line5#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line5+1,x - //SEG124 [60] *((const byte[]) scroll_hard::line5#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$27 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line5,x - //SEG125 [61] (byte~) scroll_hard::$29 ← (const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$29 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$29 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG119 [55] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line6#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line6+1,x - //SEG126 [62] *((const byte[]) scroll_hard::line6#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$29 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line6,x - //SEG127 [63] (byte~) scroll_hard::$31 ← (const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 *idx (byte) scroll_hard::i#2 [ scroll_hard::i#2 scroll_hard::$31 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 scroll_hard::$31 ] ) -- vbuaa=pbuc1_derefidx_vbuxx + //SEG120 [56] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← *((const byte[]) scroll_hard::line7#0+(byte/signed byte/word/signed word) 1 + (byte) scroll_hard::i#2) [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line7+1,x - //SEG128 [64] *((const byte[]) scroll_hard::line7#0 + (byte) scroll_hard::i#2) ← (byte~) scroll_hard::$31 [ scroll_hard::i#2 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta line7,x - //SEG129 [65] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG121 [57] (byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG130 [66] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG122 [58] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word) 39) goto scroll_hard::@1 [ scroll_hard::i#1 ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 scroll_hard::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$27 bne b1 - //SEG131 scroll_hard::@return - //SEG132 [67] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] ) + //SEG123 scroll_hard::@return + //SEG124 [59] return [ ] ( main:2::scroll_soft:10::scroll_bit:17::scroll_hard:31 [ current_bit#21 nxt#36 current_chargen#19 ] ) rts } -//SEG133 next_char +//SEG125 next_char next_char: { - //SEG134 [68] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa=_deref_pbuz1 + //SEG126 [60] (byte) next_char::c#0 ← *((byte*) nxt#31) [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa=_deref_pbuz1 ldy #0 lda (nxt),y - //SEG135 [69] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG127 [61] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ nxt#31 next_char::c#0 ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #'@' bne b1 - //SEG136 next_char::@2 - //SEG137 [70] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 + //SEG128 next_char::@2 + //SEG129 [62] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 lda TEXT - //SEG138 [71] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] - //SEG139 [71] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG140 [71] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG130 [63] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] + //SEG131 [63] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy + //SEG132 [63] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT sta nxt+1 - //SEG141 [71] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] - //SEG142 [71] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy - //SEG143 [71] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy - //SEG144 next_char::@1 + //SEG133 [63] phi from next_char to next_char::@1 [phi:next_char->next_char::@1] + //SEG134 [63] phi (byte) next_char::return#1 = (byte) next_char::c#0 [phi:next_char->next_char::@1#0] -- register_copy + //SEG135 [63] phi (byte*) nxt#18 = (byte*) nxt#31 [phi:next_char->next_char::@1#1] -- register_copy + //SEG136 next_char::@1 b1: - //SEG145 [72] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) -- pbuz1=_inc_pbuz1 + //SEG137 [64] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) -- pbuz1=_inc_pbuz1 inc nxt bne !+ inc nxt+1 !: - //SEG146 next_char::@return - //SEG147 [73] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) + //SEG138 next_char::@return + //SEG139 [65] return [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:17::next_char:24 [ next_char::return#1 nxt#19 ] ) rts } -//SEG148 fillscreen +//SEG140 fillscreen fillscreen: { .const fill = $20 .label cursor = 3 - //SEG149 [75] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] - //SEG150 [75] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 + //SEG141 [67] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG142 [67] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta cursor+1 - //SEG151 [75] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] - //SEG152 [75] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy - //SEG153 fillscreen::@1 + //SEG143 [67] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG144 [67] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy + //SEG145 fillscreen::@1 b1: - //SEG154 [76] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG146 [68] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #fill sta (cursor),y - //SEG155 [77] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG147 [69] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1=_inc_pbuz1 inc cursor bne !+ inc cursor+1 !: - //SEG156 [78] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG148 [70] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda cursor+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9696,8 +9305,8 @@ fillscreen: { cmp #> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) - [50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) + [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) - [53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) + [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) + [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.log b/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.log index 03fd11f28..33984d72a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.log @@ -381,11 +381,9 @@ endproc // print_word() proc (void()) print_byte((byte) print_byte::b) (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (void~) print_byte::$2 ← call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (void~) print_byte::$5 ← call print_char (byte~) print_byte::$4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) print_byte::@return: return endproc // print_byte() @@ -645,11 +643,9 @@ SYMBOLS (byte*) prepareMEM::mem (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 -(byte~) print_byte::$1 -(void~) print_byte::$2 -(byte~) print_byte::$3 -(byte~) print_byte::$4 -(void~) print_byte::$5 +(void~) print_byte::$1 +(byte~) print_byte::$2 +(void~) print_byte::$3 (label) print_byte::@return (byte) print_byte::b (byte[]) print_byte::hextab @@ -780,11 +776,9 @@ print_word::@return: scope:[print_word] from print_word print_byte: scope:[print_byte] from (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (void~) print_byte::$2 ← call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (void~) print_byte::$5 ← call print_char (byte~) print_byte::$4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte return @@ -1093,8 +1087,8 @@ Removing unused procedure logFAC Removing unused procedure mulFACby10 Eliminating unused variable - keeping the call (void~) print_word::$1 Eliminating unused variable - keeping the call (void~) print_word::$3 -Eliminating unused variable - keeping the call (void~) print_byte::$2 -Eliminating unused variable - keeping the call (void~) print_byte::$5 +Eliminating unused variable - keeping the call (void~) print_byte::$1 +Eliminating unused variable - keeping the call (void~) print_byte::$3 Eliminating unused variable - keeping the call (void~) setFAC::$1 Eliminating unused variable - keeping the call (void~) setMEMtoFAC::$0 Eliminating unused variable - keeping the call (void~) addMEMtoFAC::$0 @@ -1178,11 +1172,9 @@ print_word::@return: scope:[print_word] from print_word print_byte: scope:[print_byte] from (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - call print_char (byte~) print_byte::$4 + call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte return @@ -1349,15 +1341,13 @@ print_word::@return: scope:[print_word] from print_word::@2 print_byte: scope:[print_byte] from print_word print_word::@1 (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (byte) print_char::ch ← (byte~) print_byte::$1 + (byte) print_char::ch ← *((byte[]) print_byte::hextab + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte*) char_cursor ← (byte*) char_cursor - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (byte) print_char::ch ← (byte~) print_byte::$4 + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch ← *((byte[]) print_byte::hextab + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -1615,17 +1605,15 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 - (byte) print_char::ch#0 ← (byte~) print_byte::$1 + (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#3 ← phi( print_byte/(byte) print_byte::b#2 ) (byte*) char_cursor#20 ← phi( print_byte/(byte*) char_cursor#31 ) (byte*) char_cursor#6 ← (byte*) char_cursor#20 - (byte~) print_byte::$3 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 - (byte) print_char::ch#1 ← (byte~) print_byte::$4 + (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -1962,17 +1950,15 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 - (byte) print_char::ch#0 ← (byte~) print_byte::$1 + (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte) print_byte::b#3 ← phi( print_byte/(byte) print_byte::b#2 ) (byte*) char_cursor#20 ← phi( print_byte/(byte*) char_cursor#10 ) (byte*) char_cursor#6 ← (byte*) char_cursor#20 - (byte~) print_byte::$3 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 - (byte) print_char::ch#1 ← (byte~) print_byte::$4 + (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -2458,9 +2444,7 @@ INITIAL SSA SYMBOL TABLE (byte*) prepareMEM::mem#5 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 -(byte~) print_byte::$1 -(byte~) print_byte::$3 -(byte~) print_byte::$4 +(byte~) print_byte::$2 (label) print_byte::@1 (label) print_byte::@2 (label) print_byte::@return @@ -2556,10 +2540,8 @@ Alias (word) print_word::w#1 = (word) print_word::w#2 Alias (byte*) char_cursor#17 = (byte*) char_cursor#3 Alias (byte) print_byte::b#1 = (byte~) print_word::$2 Alias (byte*) char_cursor#18 = (byte*) char_cursor#4 (byte*) char_cursor#19 (byte*) char_cursor#5 -Alias (byte) print_char::ch#0 = (byte~) print_byte::$1 Alias (byte) print_byte::b#2 = (byte) print_byte::b#3 Alias (byte*) char_cursor#20 = (byte*) char_cursor#6 -Alias (byte) print_char::ch#1 = (byte~) print_byte::$4 Alias (byte*) char_cursor#21 = (byte*) char_cursor#7 (byte*) char_cursor#22 (byte*) char_cursor#8 Alias (byte*) char_cursor#10 = (byte*) char_cursor#24 (byte*) char_cursor#9 Alias (byte*) prepareMEM::mem#0 = (byte*~) setFAC::$0 @@ -2624,13 +2606,13 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte*) char_cursor#20 ← phi( print_byte/(byte*) char_cursor#10 ) - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -2907,13 +2889,13 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte (byte*) char_cursor#20 ← phi( print_byte/(byte*) char_cursor#10 ) - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -3161,12 +3143,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -3383,12 +3365,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte[]) print_byte::hextab#0 ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -3610,12 +3592,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -3825,12 +3807,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -4030,12 +4012,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@2 print_byte::@2: scope:[print_byte] from print_byte::@1 @@ -4233,12 +4215,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -4480,12 +4462,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) call print_char param-assignment to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -4714,7 +4696,7 @@ FINAL SYMBOL TABLE (byte*) prepareMEM::mem#5 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 -(byte~) print_byte::$3 +(byte~) print_byte::$2 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b @@ -4856,14 +4838,14 @@ print_byte: scope:[print_byte] from print_word print_word::@1 (byte*) char_cursor#31 ← phi( print_word/(byte*~) char_cursor#49 print_word::@1/(byte*~) char_cursor#50 ) (byte) print_byte::b#2 ← phi( print_word/(byte~) print_byte::b#4 print_word::@1/(byte~) print_byte::b#5 ) (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 - (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 + (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) (byte~) print_char::ch#3 ← (byte) print_char::ch#0 (byte*~) char_cursor#51 ← (byte*) char_cursor#31 call print_char param-assignment to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 - (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 + (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 + (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) (byte~) print_char::ch#4 ← (byte) print_char::ch#1 (byte*~) char_cursor#52 ← (byte*) char_cursor#10 call print_char param-assignment @@ -5133,14 +5115,14 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [56] (byte*) char_cursor#31 ← phi( print_word/(byte*~) char_cursor#49 print_word::@1/(byte*~) char_cursor#50 ) [ print_byte::b#2 char_cursor#31 ] [56] (byte) print_byte::b#2 ← phi( print_word/(byte~) print_byte::b#4 print_word::@1/(byte~) print_byte::b#5 ) [ print_byte::b#2 char_cursor#31 ] [57] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] - [58] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] + [58] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] [59] (byte~) print_char::ch#3 ← (byte) print_char::ch#0 [ print_byte::b#2 char_cursor#31 print_char::ch#3 ] [60] (byte*~) char_cursor#51 ← (byte*) char_cursor#31 [ print_byte::b#2 print_char::ch#3 char_cursor#51 ] [61] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [62] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] - [63] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] + [62] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] + [63] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] [64] (byte~) print_char::ch#4 ← (byte) print_char::ch#1 [ char_cursor#10 print_char::ch#4 ] [65] (byte*~) char_cursor#52 ← (byte*) char_cursor#10 [ print_char::ch#4 char_cursor#52 ] [66] call print_char param-assignment [ char_cursor#10 ] @@ -5413,12 +5395,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [48] (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#31 ] [48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#31 ] [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] - [50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] + [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] - [53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] + [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] + [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] [54] call print_char param-assignment [ char_cursor#10 ] to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -5622,12 +5604,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [48] (byte*) char_cursor#31 ← phi( print_word/(byte*) char_cursor#32 print_word::@1/(byte*) char_cursor#10 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] ) [48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 ] ) [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) - [50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) + [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte - [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) - [53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) + [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) + [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -5854,7 +5836,7 @@ VARIABLE REGISTER WEIGHTS (byte*) prepareMEM::mem#5 3.333333333333333 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 4.0 -(byte~) print_byte::$3 4.0 +(byte~) print_byte::$2 4.0 (byte) print_byte::b (byte) print_byte::b#0 4.0 (byte) print_byte::b#1 4.0 @@ -5891,7 +5873,7 @@ Initial phi equivalence classes Added variable getFAC::return#2 to zero page equivalence class [ getFAC::return#2 ] Added variable print_word::w#0 to zero page equivalence class [ print_word::w#0 ] Added variable print_byte::$0 to zero page equivalence class [ print_byte::$0 ] -Added variable print_byte::$3 to zero page equivalence class [ print_byte::$3 ] +Added variable print_byte::$2 to zero page equivalence class [ print_byte::$2 ] Added variable getFAC::return#0 to zero page equivalence class [ getFAC::return#0 ] Added variable prepareMEM::$0 to zero page equivalence class [ prepareMEM::$0 ] Added variable prepareMEM::$1 to zero page equivalence class [ prepareMEM::$1 ] @@ -5908,7 +5890,7 @@ Complete equivalence classes [ getFAC::return#2 ] [ print_word::w#0 ] [ print_byte::$0 ] -[ print_byte::$3 ] +[ print_byte::$2 ] [ getFAC::return#0 ] [ prepareMEM::$0 ] [ prepareMEM::$1 ] @@ -5924,7 +5906,7 @@ Allocated zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ] Allocated zp ZP_WORD:17 [ getFAC::return#2 ] Allocated zp ZP_WORD:19 [ print_word::w#0 ] Allocated zp ZP_BYTE:21 [ print_byte::$0 ] -Allocated zp ZP_BYTE:22 [ print_byte::$3 ] +Allocated zp ZP_BYTE:22 [ print_byte::$2 ] Allocated zp ZP_WORD:23 [ getFAC::return#0 ] Allocated zp ZP_BYTE:25 [ prepareMEM::$0 ] Allocated zp ZP_BYTE:26 [ prepareMEM::$1 ] @@ -6223,7 +6205,7 @@ print_word: { //SEG105 print_byte print_byte: { .label _0 = $15 - .label _3 = $16 + .label _2 = $16 .label b = 5 //SEG106 [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word) 4 [ print_byte::b#2 char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_byte::$0 ] ) -- vbuz1=vbuz2_ror_4 lda b @@ -6232,7 +6214,7 @@ print_byte: { lsr lsr sta _0 - //SEG107 [50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx _0 lda hextab,x sta print_char.ch @@ -6245,12 +6227,12 @@ print_byte: { jmp b1 //SEG112 print_byte::@1 b1: - //SEG113 [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) -- vbuz1=vbuz2_band_vbuc1 lda b and #$f - sta _3 - //SEG114 [53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 - ldx _3 + sta _2 + //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + ldx _2 lda hextab,x sta print_char.ch //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) @@ -6483,7 +6465,7 @@ Statement [40] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed by Statement [41] if((byte*) line_cursor#1<(byte*) char_cursor#10) goto print_ln::@1 [ line_cursor#1 char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#1 char_cursor#10 ] ) always clobbers reg byte a Statement [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) always clobbers reg byte a +Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a Statement [57] *((byte*) char_cursor#23) ← (byte) print_char::ch#2 [ char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#23 ] ) always clobbers reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#10 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] @@ -6508,7 +6490,7 @@ Statement [40] (byte*) line_cursor#1 ← (byte*) line_cursor#6 + (byte/signed by Statement [41] if((byte*) line_cursor#1<(byte*) char_cursor#10) goto print_ln::@1 [ line_cursor#1 char_cursor#10 ] ( main:2::print_ln:33 [ main::i#10 line_cursor#1 char_cursor#10 ] ) always clobbers reg byte a Statement [43] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ char_cursor#32 print_word::w#0 print_byte::b#0 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#32 print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a Statement [45] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ char_cursor#10 print_byte::b#1 ] ( main:2::print_word:31 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a -Statement [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) always clobbers reg byte a +Statement [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a Statement [57] *((byte*) char_cursor#23) ← (byte) print_char::ch#2 [ char_cursor#23 ] ( main:2::print_word:31::print_byte:44::print_char:51 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:51 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#23 ] main:2::print_word:31::print_byte:44::print_char:54 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#23 ] main:2::print_word:31::print_byte:46::print_char:54 [ main::i#10 line_cursor#13 char_cursor#23 ] ) always clobbers reg byte y Statement [61] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::getFAC:28 [ main::i#10 char_cursor#32 line_cursor#13 getFAC::return#0 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$b867 } always clobbers reg byte a reg byte y @@ -6533,7 +6515,7 @@ Potential registers zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ] : zp ZP_WORD:15 , Potential registers zp ZP_WORD:17 [ getFAC::return#2 ] : zp ZP_WORD:17 , Potential registers zp ZP_WORD:19 [ print_word::w#0 ] : zp ZP_WORD:19 , Potential registers zp ZP_BYTE:21 [ print_byte::$0 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:22 [ print_byte::$3 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ print_byte::$2 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:23 [ getFAC::return#0 ] : zp ZP_WORD:23 , Potential registers zp ZP_BYTE:25 [ prepareMEM::$0 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_BYTE:26 [ prepareMEM::$1 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , @@ -6543,7 +6525,7 @@ Uplift Scope [] 250.97: zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor# Uplift Scope [setFAC] 35: zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] Uplift Scope [getFAC] 22: zp ZP_WORD:17 [ getFAC::return#2 ] 4.33: zp ZP_WORD:23 [ getFAC::return#0 ] Uplift Scope [prepareMEM] 15.33: zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] 4: zp ZP_BYTE:25 [ prepareMEM::$0 ] 4: zp ZP_BYTE:26 [ prepareMEM::$1 ] -Uplift Scope [print_byte] 10: zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:21 [ print_byte::$0 ] 4: zp ZP_BYTE:22 [ print_byte::$3 ] +Uplift Scope [print_byte] 10: zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:21 [ print_byte::$0 ] 4: zp ZP_BYTE:22 [ print_byte::$2 ] Uplift Scope [print_char] 14: zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] Uplift Scope [main] 12.38: zp ZP_BYTE:2 [ main::i#10 main::i#1 ] Uplift Scope [print_word] 5: zp ZP_WORD:19 [ print_word::w#0 ] @@ -6559,7 +6541,7 @@ Uplifting [] best 6734 combination zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 l Uplifting [setFAC] best 6734 combination zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] Uplifting [getFAC] best 6734 combination zp ZP_WORD:17 [ getFAC::return#2 ] zp ZP_WORD:23 [ getFAC::return#0 ] Uplifting [prepareMEM] best 6722 combination zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] -Uplifting [print_byte] best 6710 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$3 ] +Uplifting [print_byte] best 6710 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte y [ print_byte::$0 ] reg byte a [ print_byte::$2 ] Uplifting [print_char] best 6701 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] Uplifting [main] best 6701 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ] Uplifting [print_word] best 6701 combination zp ZP_WORD:19 [ print_word::w#0 ] @@ -6876,7 +6858,7 @@ print_byte: { lsr lsr tay - //SEG107 [50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG108 [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] @@ -6887,10 +6869,10 @@ print_byte: { jmp b1 //SEG112 print_byte::@1 b1: - //SEG113 [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda hextab,x //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) @@ -7289,7 +7271,7 @@ FINAL SYMBOL TABLE (byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte y 4.0 -(byte~) print_byte::$3 reg byte a 4.0 +(byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b @@ -7333,7 +7315,7 @@ reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] reg byte y [ print_byte::$0 ] -reg byte a [ print_byte::$3 ] +reg byte a [ print_byte::$2 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] @@ -7561,7 +7543,7 @@ print_byte: { lsr lsr tay - //SEG107 [50] (byte) print_char::ch#0 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$0 [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 print_byte::b#2 char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 print_byte::b#2 char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuyy lda hextab,y //SEG108 [51] call print_char param-assignment [ char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::b#2 ] ) //SEG109 [56] phi from print_byte to print_char [phi:print_byte->print_char] @@ -7569,10 +7551,10 @@ print_byte: { //SEG111 [56] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy jsr print_char //SEG112 print_byte::@1 - //SEG113 [52] (byte~) print_byte::$3 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$3 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$3 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$3 ] ) -- vbuaa=vbuxx_band_vbuc1 + //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word) 15 [ char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← (const byte[]) print_byte::hextab#0 *idx (byte~) print_byte::$3 [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tax lda hextab,x //SEG115 [54] call print_char param-assignment [ char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 line_cursor#13 print_word::w#0 char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 line_cursor#13 char_cursor#10 ] ) diff --git a/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.sym b/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.sym index 7bff985fb..8a7b15aa3 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/sinus-basic.sym @@ -73,7 +73,7 @@ (byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333 (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 reg byte y 4.0 -(byte~) print_byte::$3 reg byte a 4.0 +(byte~) print_byte::$2 reg byte a 4.0 (label) print_byte::@1 (label) print_byte::@return (byte) print_byte::b @@ -117,6 +117,6 @@ reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ] reg byte y [ print_byte::$0 ] -reg byte a [ print_byte::$3 ] +reg byte a [ print_byte::$2 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm index 45e1e817e..66a7fe73f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.asm @@ -39,7 +39,7 @@ main: { jmp b2 } anim: { - .label _3 = 5 + .label _2 = 5 .label xidx = 4 .label x = 8 .label x_msb = 5 @@ -64,7 +64,7 @@ anim: { lda #>$1e adc #0 sta x+1 - asl _3 + asl _2 ora x_msb sta x_msb lda x diff --git a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg index dc0e44d7d..4446691d6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg @@ -37,437 +37,433 @@ anim::@1: scope:[anim] from anim anim::@3 [15] (byte) anim::j2#3 ← phi( anim/(byte/signed byte/word/signed word) 12 anim::@3/(byte) anim::j2#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ) [15] (byte) anim::x_msb#2 ← phi( anim/(byte/signed byte/word/signed word) 0 anim::@3/(byte) anim::x_msb#1 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ) [15] (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ) - [16] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ) - [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) - [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) - [19] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ) - [20] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) - [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) - [22] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) - [23] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ) - [24] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) - [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) - [26] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) + [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) + [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) + [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) + [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) + [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) + [21] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) + [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) + [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) + [24] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) to:anim::@6 anim::@6: scope:[anim] from anim::@1 - [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) + [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) to:anim::@2 anim::@2: scope:[anim] from anim::@1 anim::@6 - [28] (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ) - [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) - [30] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) + [26] (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ) + [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) + [28] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) to:anim::@7 anim::@7: scope:[anim] from anim::@2 - [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) + [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) to:anim::@3 anim::@3: scope:[anim] from anim::@2 anim::@7 - [32] (byte) anim::yidx#6 ← phi( anim::@2/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ) - [33] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) - [34] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) - [35] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) - [36] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) + [30] (byte) anim::yidx#6 ← phi( anim::@2/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ) + [31] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) + [32] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) + [33] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) + [34] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) to:anim::@8 anim::@8: scope:[anim] from anim::@3 - [37] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) - [38] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) - [39] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) + [35] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) + [36] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) + [37] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) to:anim::@4 anim::@4: scope:[anim] from anim::@14 anim::@8 - [40] (byte) sin_idx_x#11 ← phi( anim::@14/(byte) sin_idx_x#3 anim::@8/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#11 ] ) - [41] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) - [42] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) + [38] (byte) sin_idx_x#11 ← phi( anim::@14/(byte) sin_idx_x#3 anim::@8/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#11 ] ) + [39] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) + [40] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) to:anim::@5 anim::@5: scope:[anim] from anim::@15 anim::@4 - [43] (byte) sin_idx_y#11 ← phi( anim::@4/(byte/signed byte/word/signed word) 0 anim::@15/(byte) sin_idx_y#3 ) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) - [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + [41] (byte) sin_idx_y#11 ← phi( anim::@4/(byte/signed byte/word/signed word) 0 anim::@15/(byte) sin_idx_y#3 ) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + [42] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) to:anim::@return anim::@return: scope:[anim] from anim::@5 - [45] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + [43] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) to:@return anim::@15: scope:[anim] from anim::@4 - [46] phi() [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) + [44] phi() [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) to:anim::@5 anim::@14: scope:[anim] from anim::@8 - [47] phi() [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) + [45] phi() [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) to:anim::@4 init: scope:[init] from main - [48] phi() [ ] ( main:2::init:5 [ ] ) - [49] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + [46] phi() [ ] ( main:2::init:5 [ ] ) + [47] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@1 init::@1: scope:[init] from init init::@1 - [50] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) - [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) - [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) - [53] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) - [54] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) + [48] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) + [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) + [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) + [51] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) + [52] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) to:init::@2 init::@2: scope:[init] from init::@1 - [55] phi() [ ] ( main:2::init:5 [ ] ) - [56] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + [53] phi() [ ] ( main:2::init:5 [ ] ) + [54] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@4 init::@4: scope:[init] from init::@2 - [57] phi() [ ] ( main:2::init:5 [ ] ) - [58] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + [55] phi() [ ] ( main:2::init:5 [ ] ) + [56] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@5 init::@5: scope:[init] from init::@4 - [59] phi() [ ] ( main:2::init:5 [ ] ) - [60] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [57] phi() [ ] ( main:2::init:5 [ ] ) + [58] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) to:init::@6 init::@6: scope:[init] from init::@5 - [61] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - [62] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + [59] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [60] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@7 init::@7: scope:[init] from init::@6 - [63] phi() [ ] ( main:2::init:5 [ ] ) - [64] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [61] phi() [ ] ( main:2::init:5 [ ] ) + [62] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) to:init::@8 init::@8: scope:[init] from init::@7 - [65] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - [66] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + [63] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [64] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@9 init::@9: scope:[init] from init::@8 - [67] phi() [ ] ( main:2::init:5 [ ] ) - [68] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + [65] phi() [ ] ( main:2::init:5 [ ] ) + [66] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@return init::@return: scope:[init] from init::@9 - [69] return [ ] ( main:2::init:5 [ ] ) + [67] return [ ] ( main:2::init:5 [ ] ) to:@return clear_screen: scope:[clear_screen] from init init::@9 - [70] phi() [ ] ( main:2::init:5::clear_screen:49 [ ] main:2::init:5::clear_screen:68 [ ] ) + [68] phi() [ ] ( main:2::init:5::clear_screen:47 [ ] main:2::init:5::clear_screen:66 [ ] ) to:clear_screen::@1 clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 - [71] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@1/(byte*) clear_screen::sc#1 ) [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) - [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) - [73] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) - [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) + [69] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@1/(byte*) clear_screen::sc#1 ) [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) + [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) + [71] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) + [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) to:clear_screen::@return clear_screen::@return: scope:[clear_screen] from clear_screen::@1 - [75] return [ ] ( main:2::init:5::clear_screen:49 [ ] main:2::init:5::clear_screen:68 [ ] ) + [73] return [ ] ( main:2::init:5::clear_screen:47 [ ] main:2::init:5::clear_screen:66 [ ] ) to:@return gen_sintab: scope:[gen_sintab] from init::@6 init::@8 - [76] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [76] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [76] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [76] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) - [78] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) + [76] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@3 gen_sintab::@3: scope:[gen_sintab] from gen_sintab - [79] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [80] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [77] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [78] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@4 gen_sintab::@4: scope:[gen_sintab] from gen_sintab::@3 asm { lda#0ldx#0ldy#0 } - [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) - [83] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) + [81] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@5 gen_sintab::@5: scope:[gen_sintab] from gen_sintab::@4 - [84] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [85] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [82] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [83] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@6 gen_sintab::@6: scope:[gen_sintab] from gen_sintab::@5 - [86] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [87] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [84] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [85] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@7 gen_sintab::@7: scope:[gen_sintab] from gen_sintab::@6 - [88] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [89] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [86] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [87] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@8 gen_sintab::@8: scope:[gen_sintab] from gen_sintab::@7 - [90] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [91] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [88] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [89] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@9 gen_sintab::@9: scope:[gen_sintab] from gen_sintab::@8 - [92] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [93] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [90] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [91] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@10 gen_sintab::@10: scope:[gen_sintab] from gen_sintab::@9 - [94] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [95] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [92] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [93] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@11 gen_sintab::@11: scope:[gen_sintab] from gen_sintab::@10 - [96] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [97] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [94] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [95] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@12 gen_sintab::@12: scope:[gen_sintab] from gen_sintab::@11 - [98] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [99] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [96] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [97] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@1 gen_sintab::@1: scope:[gen_sintab] from gen_sintab::@12 gen_sintab::@23 - [100] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@23/(byte*) progress_cursor#11 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [100] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) progress_idx#12 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [100] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) gen_sintab::i#1 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) - [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [98] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@23/(byte*) progress_cursor#11 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [98] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) progress_idx#12 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [98] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) gen_sintab::i#1 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) + [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@14 gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@1 - [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [104] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [101] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [102] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@15 gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14 - [105] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@16 gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15 - [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) - [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) + [106] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@17 gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16 - [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [107] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [108] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@18 gen_sintab::@18: scope:[gen_sintab] from gen_sintab::@17 - [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [112] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [110] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@19 gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18 - [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [114] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [112] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@20 gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19 - [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@21 gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20 - [117] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [118] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) - [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) + [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [116] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) to:gen_sintab::@22 gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21 - [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) - [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) - [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [123] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) + [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) + [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [121] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) to:gen_sintab::@23 gen_sintab::@23: scope:[gen_sintab] from gen_sintab::@22 - [124] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) - [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) + [122] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) + [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) to:gen_sintab::@return gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 - [126] return [ ] ( main:2::init:5::gen_sintab:62 [ ] main:2::init:5::gen_sintab:66 [ ] ) + [124] return [ ] ( main:2::init:5::gen_sintab:60 [ ] main:2::init:5::gen_sintab:64 [ ] ) to:@return progress_inc: scope:[progress_inc] from gen_sintab::@22 - [127] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) - [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) + [125] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) + [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - [129] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] ) - [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) - [131] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) + [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) + [128] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - [132] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) - [132] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) - [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] ) - [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [129] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [129] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 - [135] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [131] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) to:@return getFAC: scope:[getFAC] from gen_sintab::@21 asm { jsr$b1aasty$festa$ff } - [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) to:getFAC::@return getFAC::@return: scope:[getFAC] from getFAC - [138] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + [134] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) to:@return addMEMtoFAC: scope:[addMEMtoFAC] from gen_sintab::@11 gen_sintab::@20 - [139] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] ) - [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) - [141] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [135] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] ) + [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) + [137] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:addMEMtoFAC::@1 addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC asm { lda$feldy$ffjsr$b867 } to:addMEMtoFAC::@return addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1 - [143] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [139] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC - [144] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) - [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) - [146] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) - [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) - [148] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [140] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) + [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) + [142] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) + [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) + [144] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:prepareMEM::@return prepareMEM::@return: scope:[prepareMEM] from prepareMEM - [149] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [145] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return mulFACbyMEM: scope:[mulFACbyMEM] from gen_sintab::@14 gen_sintab::@19 - [150] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] ) - [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) - [152] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [146] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] ) + [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) + [148] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:mulFACbyMEM::@1 mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM asm { lda$feldy$ffjsr$ba28 } to:mulFACbyMEM::@return mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1 - [154] return [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [150] return [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return sinFAC: scope:[sinFAC] from gen_sintab::@18 asm { jsr$e26b } to:sinFAC::@return sinFAC::@return: scope:[sinFAC] from sinFAC - [156] return [ ] ( main:2::init:5::gen_sintab:62::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [152] return [ ] ( main:2::init:5::gen_sintab:60::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return divMEMbyFAC: scope:[divMEMbyFAC] from gen_sintab::@17 gen_sintab::@9 - [157] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] ) - [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) - [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [153] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] ) + [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) + [155] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:divMEMbyFAC::@1 divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC asm { lda$feldy$ffjsr$bb0f } to:divMEMbyFAC::@return divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1 - [161] return [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [157] return [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return setFAC: scope:[setFAC] from gen_sintab gen_sintab::@1 gen_sintab::@16 gen_sintab::@4 gen_sintab::@8 - [162] (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@1/(word) setFAC::w#3 gen_sintab::@16/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] ) - [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) - [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [158] (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@1/(word) setFAC::w#3 gen_sintab::@16/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] ) + [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) + [160] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:setFAC::@1 setFAC::@1: scope:[setFAC] from setFAC asm { ldy$felda$ffjsr$b391 } to:setFAC::@return setFAC::@return: scope:[setFAC] from setFAC::@1 - [166] return [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [162] return [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return setMEMtoFAC: scope:[setMEMtoFAC] from gen_sintab::@10 gen_sintab::@12 gen_sintab::@15 gen_sintab::@5 gen_sintab::@7 - [167] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] ) - [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) - [169] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [163] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] ) + [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) + [165] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:setMEMtoFAC::@1 setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC asm { ldx$feldy$ffjsr$bbd4 } to:setMEMtoFAC::@return setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1 - [171] return [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [167] return [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return subFACfromARG: scope:[subFACfromARG] from gen_sintab::@6 asm { jsr$b853 } to:subFACfromARG::@return subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG - [173] return [ ] ( main:2::init:5::gen_sintab:62::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [169] return [ ] ( main:2::init:5::gen_sintab:60::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:@return setARGtoFAC: scope:[setARGtoFAC] from gen_sintab::@3 asm { jsr$bc0f } to:setARGtoFAC::@return setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC - [175] return [ ] ( main:2::init:5::gen_sintab:62::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [171] return [ ] ( main:2::init:5::gen_sintab:60::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:@return progress_init: scope:[progress_init] from init::@5 init::@7 - [176] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + [172] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) to:progress_init::@return progress_init::@return: scope:[progress_init] from progress_init - [177] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + [173] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) to:@return gen_sprites: scope:[gen_sprites] from init::@4 - [178] phi() [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + [174] phi() [ ] ( main:2::init:5::gen_sprites:56 [ ] ) to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 - [179] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) - [179] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) - [180] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) - [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) - [182] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [175] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [175] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [176] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) + [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) + [178] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 - [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) - [184] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) - [185] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) + [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) + [180] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) + [181] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 - [186] return [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + [182] return [ ] ( main:2::init:5::gen_sprites:56 [ ] ) to:@return gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 - [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) - [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) - [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) + [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) + [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) + [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) asm { sei } - [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) + [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 - [192] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) - [192] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) - [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) + [188] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) + [188] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) + [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 - [194] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) - [196] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) + [192] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) to:gen_chargen_sprite::@6 gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 - [197] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [193] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) to:gen_chargen_sprite::@3 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 - [198] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ) + [194] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ) to:gen_chargen_sprite::@4 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 gen_chargen_sprite::@5 - [199] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [199] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [199] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [199] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) - [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) - [202] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) - [203] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) + [195] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [195] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [195] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [195] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) + [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) + [198] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) + [199] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) to:gen_chargen_sprite::@7 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 - [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) - [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) - [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [207] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) + [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) + [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) + [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [203] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) to:gen_chargen_sprite::@5 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 - [208] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) - [208] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) - [208] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) - [209] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) - [210] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) + [204] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) + [204] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) + [204] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) + [205] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) + [206] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) to:gen_chargen_sprite::@8 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - [211] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) - [212] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) - [213] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) + [207] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) + [208] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) + [209] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) - [215] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) - [216] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) + [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) + [211] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) + [212] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 - [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) asm { cli } to:gen_chargen_sprite::@return gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 - [219] return [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [215] return [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) to:@return place_sprites: scope:[place_sprites] from init::@2 - [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) - [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) - [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) + [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) + [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) + [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) to:place_sprites::@1 place_sprites::@1: scope:[place_sprites] from place_sprites place_sprites::@1 - [223] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@1/(byte) place_sprites::col#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j2#2 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@1/(byte) place_sprites::spr_x#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@1/(byte) place_sprites::spr_id#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [225] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) - [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) - [231] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) - [232] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) - [233] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) - [234] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) + [219] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@1/(byte) place_sprites::col#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j2#2 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@1/(byte) place_sprites::spr_x#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@1/(byte) place_sprites::spr_id#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [221] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) + [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) + [227] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) + [228] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) + [229] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) + [230] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) to:place_sprites::@return place_sprites::@return: scope:[place_sprites] from place_sprites::@1 - [235] return [ ] ( main:2::init:5::place_sprites:56 [ ] ) + [231] return [ ] ( main:2::init:5::place_sprites:54 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 340fe96f8..a8f138445 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -790,11 +790,9 @@ endproc // print_word() proc (void()) print_byte((byte) print_byte::b) (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (void~) print_byte::$2 ← call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (void~) print_byte::$5 ← call print_char (byte~) print_byte::$4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) print_byte::@return: return endproc // print_byte() @@ -867,13 +865,11 @@ proc (void()) progress_inc() (boolean~) progress_inc::$0 ← (byte) progress_idx == (byte/signed byte/word/signed word) 8 (boolean~) progress_inc::$1 ← ! (boolean~) progress_inc::$0 if((boolean~) progress_inc::$1) goto progress_inc::@1 - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor ← ++ (byte*) progress_cursor (byte) progress_idx ← (byte/signed byte/word/signed word) 0 progress_inc::@1: - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars *idx (byte) progress_idx - *((byte*) progress_cursor) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte) progress_idx) progress_inc::@return: return endproc // progress_inc() @@ -888,49 +884,47 @@ proc (void()) anim() (byte) anim::j ← (byte/signed byte/word/signed word) 0 anim::@1: (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x *idx (byte) anim::xidx - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x - *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y *idx (byte) anim::yidx - *((byte*) SPRITES_YPOS + (byte) anim::j2) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx ← (byte~) anim::$8 - (boolean~) anim::$9 ← (byte) anim::xidx >= (byte) sinlen_x - (boolean~) anim::$10 ← ! (boolean~) anim::$9 - if((boolean~) anim::$10) goto anim::@2 - (byte~) anim::$11 ← (byte) anim::xidx - (byte) sinlen_x - (byte) anim::xidx ← (byte~) anim::$11 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x + (byte) anim::xidx) + (word) anim::x ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x + *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS + (byte) anim::j2) ← *((byte[]) sintab_y + (byte) anim::yidx) + (byte~) anim::$6 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx ← (byte~) anim::$6 + (boolean~) anim::$7 ← (byte) anim::xidx >= (byte) sinlen_x + (boolean~) anim::$8 ← ! (boolean~) anim::$7 + if((boolean~) anim::$8) goto anim::@2 + (byte~) anim::$9 ← (byte) anim::xidx - (byte) sinlen_x + (byte) anim::xidx ← (byte~) anim::$9 anim::@2: - (byte~) anim::$12 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx ← (byte~) anim::$12 - (boolean~) anim::$13 ← (byte) anim::yidx >= (byte) sinlen_y - (boolean~) anim::$14 ← ! (boolean~) anim::$13 - if((boolean~) anim::$14) goto anim::@3 - (byte~) anim::$15 ← (byte) anim::yidx - (byte) sinlen_y - (byte) anim::yidx ← (byte~) anim::$15 + (byte~) anim::$10 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx ← (byte~) anim::$10 + (boolean~) anim::$11 ← (byte) anim::yidx >= (byte) sinlen_y + (boolean~) anim::$12 ← ! (boolean~) anim::$11 + if((boolean~) anim::$12) goto anim::@3 + (byte~) anim::$13 ← (byte) anim::yidx - (byte) sinlen_y + (byte) anim::yidx ← (byte~) anim::$13 anim::@3: (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j ← ++ (byte) anim::j - (boolean~) anim::$16 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 *((byte*) SPRITES_XMSB) ← (byte) anim::x_msb (byte) sin_idx_x ← ++ (byte) sin_idx_x - (boolean~) anim::$17 ← (byte) sin_idx_x >= (byte) sinlen_x - (boolean~) anim::$18 ← ! (boolean~) anim::$17 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$15 ← (byte) sin_idx_x >= (byte) sinlen_x + (boolean~) anim::$16 ← ! (boolean~) anim::$15 + if((boolean~) anim::$16) goto anim::@4 (byte) sin_idx_x ← (byte/signed byte/word/signed word) 0 anim::@4: (byte) sin_idx_y ← ++ (byte) sin_idx_y - (boolean~) anim::$19 ← (byte) sin_idx_y >= (byte) sinlen_y - (boolean~) anim::$20 ← ! (boolean~) anim::$19 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$17 ← (byte) sin_idx_y >= (byte) sinlen_y + (boolean~) anim::$18 ← ! (boolean~) anim::$17 + if((boolean~) anim::$18) goto anim::@5 (byte) sin_idx_y ← (byte/signed byte/word/signed word) 0 anim::@5: *((byte*) BORDERCOL) ← -- *((byte*) BORDERCOL) @@ -974,13 +968,12 @@ proc (void()) gen_sprites() (byte*) gen_sprites::spr ← (byte[]) sprites (byte) gen_sprites::i ← (byte/signed byte/word/signed word) 0 gen_sprites::@1: - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml *idx (byte) gen_sprites::i - (void~) gen_sprites::$1 ← call gen_chargen_sprite (byte~) gen_sprites::$0 (byte*) gen_sprites::spr - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$2 + (void~) gen_sprites::$0 ← call gen_chargen_sprite *((byte[]) gen_sprites::cml + (byte) gen_sprites::i) (byte*) gen_sprites::spr + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i ← ++ (byte) gen_sprites::i - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 gen_sprites::@return: return endproc // gen_sprites() @@ -993,28 +986,27 @@ proc (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_cha *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 50 (byte) gen_chargen_sprite::y ← (byte/signed byte/word/signed word) 0 gen_chargen_sprite::@1: - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen *idx (byte) gen_chargen_sprite::y - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits ← *((byte*) gen_chargen_sprite::chargen + (byte) gen_chargen_sprite::y) (byte) gen_chargen_sprite::s_gen ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x ← (byte/signed byte/word/signed word) 0 gen_chargen_sprite::@2: (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 - (boolean~) gen_chargen_sprite::$6 ← ! (boolean~) gen_chargen_sprite::$5 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 + (boolean~) gen_chargen_sprite::$5 ← ! (boolean~) gen_chargen_sprite::$4 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 1 gen_chargen_sprite::@3: (byte) gen_chargen_sprite::b ← (byte/signed byte/word/signed word) 0 gen_chargen_sprite::@4: - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c - (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c + (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt ← ++ (byte) gen_chargen_sprite::s_gen_cnt - (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 - (boolean~) gen_chargen_sprite::$10 ← ! (boolean~) gen_chargen_sprite::$9 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 + (boolean~) gen_chargen_sprite::$9 ← ! (boolean~) gen_chargen_sprite::$8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 *((byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen *((byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen *((byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen @@ -1023,18 +1015,18 @@ gen_chargen_sprite::@4: (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5: (byte) gen_chargen_sprite::b ← ++ (byte) gen_chargen_sprite::b - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$12 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x ← ++ (byte) gen_chargen_sprite::x - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$14 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y ← ++ (byte) gen_chargen_sprite::y - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 asm { cli } gen_chargen_sprite::@return: @@ -1113,26 +1105,24 @@ SYMBOLS (byte*) addMEMtoFAC::mem (void()) anim() (word~) anim::$0 -(byte~) anim::$1 -(boolean~) anim::$10 -(byte~) anim::$11 -(byte~) anim::$12 -(boolean~) anim::$13 +(word~) anim::$1 +(byte~) anim::$10 +(boolean~) anim::$11 +(boolean~) anim::$12 +(byte~) anim::$13 (boolean~) anim::$14 -(byte~) anim::$15 +(boolean~) anim::$15 (boolean~) anim::$16 (boolean~) anim::$17 (boolean~) anim::$18 -(boolean~) anim::$19 -(word~) anim::$2 -(boolean~) anim::$20 +(byte~) anim::$2 (byte~) anim::$3 (byte~) anim::$4 (byte~) anim::$5 (byte~) anim::$6 -(byte~) anim::$7 -(byte~) anim::$8 -(boolean~) anim::$9 +(boolean~) anim::$7 +(boolean~) anim::$8 +(byte~) anim::$9 (label) anim::@1 (label) anim::@2 (label) anim::@3 @@ -1168,18 +1158,17 @@ SYMBOLS (word~) gen_chargen_sprite::$0 (word~) gen_chargen_sprite::$1 (boolean~) gen_chargen_sprite::$10 -(boolean~) gen_chargen_sprite::$11 -(byte~) gen_chargen_sprite::$12 -(boolean~) gen_chargen_sprite::$13 -(byte*~) gen_chargen_sprite::$14 -(boolean~) gen_chargen_sprite::$15 +(byte~) gen_chargen_sprite::$11 +(boolean~) gen_chargen_sprite::$12 +(byte*~) gen_chargen_sprite::$13 +(boolean~) gen_chargen_sprite::$14 (byte*~) gen_chargen_sprite::$2 (byte~) gen_chargen_sprite::$3 -(byte~) gen_chargen_sprite::$4 +(boolean~) gen_chargen_sprite::$4 (boolean~) gen_chargen_sprite::$5 -(boolean~) gen_chargen_sprite::$6 +(byte~) gen_chargen_sprite::$6 (byte~) gen_chargen_sprite::$7 -(byte~) gen_chargen_sprite::$8 +(boolean~) gen_chargen_sprite::$8 (boolean~) gen_chargen_sprite::$9 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@2 @@ -1237,10 +1226,9 @@ SYMBOLS (byte) gen_sintab::min (byte*) gen_sintab::sintab (void()) gen_sprites() -(byte~) gen_sprites::$0 -(void~) gen_sprites::$1 -(byte*~) gen_sprites::$2 -(boolean~) gen_sprites::$3 +(void~) gen_sprites::$0 +(byte*~) gen_sprites::$1 +(boolean~) gen_sprites::$2 (label) gen_sprites::@1 (label) gen_sprites::@return (byte[]) gen_sprites::cml @@ -1308,11 +1296,9 @@ SYMBOLS (byte*) prepareMEM::mem (void()) print_byte((byte) print_byte::b) (byte~) print_byte::$0 -(byte~) print_byte::$1 -(void~) print_byte::$2 -(byte~) print_byte::$3 -(byte~) print_byte::$4 -(void~) print_byte::$5 +(void~) print_byte::$1 +(byte~) print_byte::$2 +(void~) print_byte::$3 (label) print_byte::@return (byte) print_byte::b (byte[]) print_byte::hextab @@ -1343,8 +1329,6 @@ SYMBOLS (void()) progress_inc() (boolean~) progress_inc::$0 (boolean~) progress_inc::$1 -(byte~) progress_inc::$2 -(byte~) progress_inc::$3 (label) progress_inc::@1 (label) progress_inc::@return (byte[]) progress_inc::progress_chars @@ -1740,11 +1724,9 @@ print_word::@return: scope:[print_word] from print_word print_byte: scope:[print_byte] from (byte[]) print_byte::hextab ← { (byte) '0', (byte) '1', (byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7', (byte) '8', (byte) '9', (byte) 'a', (byte) 'b', (byte) 'c', (byte) 'd', (byte) 'e', (byte) 'f' } (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word) 4 - (byte~) print_byte::$1 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$0 - (void~) print_byte::$2 ← call print_char (byte~) print_byte::$1 - (byte~) print_byte::$3 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 - (byte~) print_byte::$4 ← (byte[]) print_byte::hextab *idx (byte~) print_byte::$3 - (void~) print_byte::$5 ← call print_char (byte~) print_byte::$4 + (void~) print_byte::$1 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$0) + (byte~) print_byte::$2 ← (byte) print_byte::b & (byte/signed byte/word/signed word) 15 + (void~) print_byte::$3 ← call print_char *((byte[]) print_byte::hextab + (byte~) print_byte::$2) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte return @@ -1849,12 +1831,10 @@ progress_inc: scope:[progress_inc] from if((boolean~) progress_inc::$1) goto progress_inc::@1 to:progress_inc::@2 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars *idx (byte) progress_idx - *((byte*) progress_cursor) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte) progress_idx) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor ← ++ (byte*) progress_cursor (byte) progress_idx ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -1875,57 +1855,55 @@ anim: scope:[anim] from to:anim::@1 anim::@1: scope:[anim] from anim anim::@3 (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x *idx (byte) anim::xidx - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x - *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y *idx (byte) anim::yidx - *((byte*) SPRITES_YPOS + (byte) anim::j2) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx ← (byte~) anim::$8 - (boolean~) anim::$9 ← (byte) anim::xidx >= (byte) sinlen_x - (boolean~) anim::$10 ← ! (boolean~) anim::$9 - if((boolean~) anim::$10) goto anim::@2 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x + (byte) anim::xidx) + (word) anim::x ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x + *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS + (byte) anim::j2) ← *((byte[]) sintab_y + (byte) anim::yidx) + (byte~) anim::$6 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx ← (byte~) anim::$6 + (boolean~) anim::$7 ← (byte) anim::xidx >= (byte) sinlen_x + (boolean~) anim::$8 ← ! (boolean~) anim::$7 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 - (byte~) anim::$12 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx ← (byte~) anim::$12 - (boolean~) anim::$13 ← (byte) anim::yidx >= (byte) sinlen_y - (boolean~) anim::$14 ← ! (boolean~) anim::$13 - if((boolean~) anim::$14) goto anim::@3 + (byte~) anim::$10 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx ← (byte~) anim::$10 + (boolean~) anim::$11 ← (byte) anim::yidx >= (byte) sinlen_y + (boolean~) anim::$12 ← ! (boolean~) anim::$11 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 - (byte~) anim::$11 ← (byte) anim::xidx - (byte) sinlen_x - (byte) anim::xidx ← (byte~) anim::$11 + (byte~) anim::$9 ← (byte) anim::xidx - (byte) sinlen_x + (byte) anim::xidx ← (byte~) anim::$9 to:anim::@2 anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j ← ++ (byte) anim::j - (boolean~) anim::$16 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 - (byte~) anim::$15 ← (byte) anim::yidx - (byte) sinlen_y - (byte) anim::yidx ← (byte~) anim::$15 + (byte~) anim::$13 ← (byte) anim::yidx - (byte) sinlen_y + (byte) anim::yidx ← (byte~) anim::$13 to:anim::@3 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB) ← (byte) anim::x_msb (byte) sin_idx_x ← ++ (byte) sin_idx_x - (boolean~) anim::$17 ← (byte) sin_idx_x >= (byte) sinlen_x - (boolean~) anim::$18 ← ! (boolean~) anim::$17 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$15 ← (byte) sin_idx_x >= (byte) sinlen_x + (boolean~) anim::$16 ← ! (boolean~) anim::$15 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_y ← ++ (byte) sin_idx_y - (boolean~) anim::$19 ← (byte) sin_idx_y >= (byte) sinlen_y - (boolean~) anim::$20 ← ! (boolean~) anim::$19 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$17 ← (byte) sin_idx_y >= (byte) sinlen_y + (boolean~) anim::$18 ← ! (boolean~) anim::$17 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x ← (byte/signed byte/word/signed word) 0 @@ -1985,13 +1963,12 @@ gen_sprites: scope:[gen_sprites] from (byte) gen_sprites::i ← (byte/signed byte/word/signed word) 0 to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@1 - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml *idx (byte) gen_sprites::i - (void~) gen_sprites::$1 ← call gen_chargen_sprite (byte~) gen_sprites::$0 (byte*) gen_sprites::spr - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$2 + (void~) gen_sprites::$0 ← call gen_chargen_sprite *((byte[]) gen_sprites::cml + (byte) gen_sprites::i) (byte*) gen_sprites::spr + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i ← ++ (byte) gen_sprites::i - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@2 gen_sprites::@2: scope:[gen_sprites] from gen_sprites::@1 to:gen_sprites::@return @@ -2010,18 +1987,17 @@ gen_chargen_sprite: scope:[gen_chargen_sprite] from (byte) gen_chargen_sprite::y ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen *idx (byte) gen_chargen_sprite::y - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits ← *((byte*) gen_chargen_sprite::chargen + (byte) gen_chargen_sprite::y) (byte) gen_chargen_sprite::s_gen ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 - (boolean~) gen_chargen_sprite::$6 ← ! (boolean~) gen_chargen_sprite::$5 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 + (boolean~) gen_chargen_sprite::$5 ← ! (boolean~) gen_chargen_sprite::$4 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::b ← (byte/signed byte/word/signed word) 0 @@ -2030,18 +2006,18 @@ gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 1 to:gen_chargen_sprite::@3 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 gen_chargen_sprite::@5 - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c - (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c + (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt ← ++ (byte) gen_chargen_sprite::s_gen_cnt - (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 - (boolean~) gen_chargen_sprite::$10 ← ! (boolean~) gen_chargen_sprite::$9 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 + (boolean~) gen_chargen_sprite::$9 ← ! (boolean~) gen_chargen_sprite::$8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte) gen_chargen_sprite::b ← ++ (byte) gen_chargen_sprite::b - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen @@ -2052,18 +2028,18 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@5 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$12 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x ← ++ (byte) gen_chargen_sprite::x - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$14 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y ← ++ (byte) gen_chargen_sprite::y - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 @@ -2170,7 +2146,7 @@ Eliminating unused variable - keeping the call (void~) init::$6 Eliminating unused variable - keeping the call (void~) init::$8 Eliminating unused variable - keeping the call (void~) init::$9 Eliminating unused variable - keeping the call (void~) init::$10 -Eliminating unused variable - keeping the call (void~) gen_sprites::$1 +Eliminating unused variable - keeping the call (void~) gen_sprites::$0 Eliminating unused variable - keeping the call (void~) gen_sintab::$1 Eliminating unused variable - keeping the call (void~) gen_sintab::$2 Eliminating unused variable - keeping the call (void~) gen_sintab::$4 @@ -2407,12 +2383,10 @@ progress_inc: scope:[progress_inc] from if((boolean~) progress_inc::$1) goto progress_inc::@1 to:progress_inc::@2 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars *idx (byte) progress_idx - *((byte*) progress_cursor) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte) progress_idx) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor ← ++ (byte*) progress_cursor (byte) progress_idx ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -2433,57 +2407,55 @@ anim: scope:[anim] from to:anim::@1 anim::@1: scope:[anim] from anim anim::@3 (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x *idx (byte) anim::xidx - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x - *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y *idx (byte) anim::yidx - *((byte*) SPRITES_YPOS + (byte) anim::j2) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx ← (byte~) anim::$8 - (boolean~) anim::$9 ← (byte) anim::xidx >= (byte) sinlen_x - (boolean~) anim::$10 ← ! (boolean~) anim::$9 - if((boolean~) anim::$10) goto anim::@2 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x + (byte) anim::xidx) + (word) anim::x ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x + *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS + (byte) anim::j2) ← *((byte[]) sintab_y + (byte) anim::yidx) + (byte~) anim::$6 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx ← (byte~) anim::$6 + (boolean~) anim::$7 ← (byte) anim::xidx >= (byte) sinlen_x + (boolean~) anim::$8 ← ! (boolean~) anim::$7 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 - (byte~) anim::$12 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx ← (byte~) anim::$12 - (boolean~) anim::$13 ← (byte) anim::yidx >= (byte) sinlen_y - (boolean~) anim::$14 ← ! (boolean~) anim::$13 - if((boolean~) anim::$14) goto anim::@3 + (byte~) anim::$10 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx ← (byte~) anim::$10 + (boolean~) anim::$11 ← (byte) anim::yidx >= (byte) sinlen_y + (boolean~) anim::$12 ← ! (boolean~) anim::$11 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 - (byte~) anim::$11 ← (byte) anim::xidx - (byte) sinlen_x - (byte) anim::xidx ← (byte~) anim::$11 + (byte~) anim::$9 ← (byte) anim::xidx - (byte) sinlen_x + (byte) anim::xidx ← (byte~) anim::$9 to:anim::@2 anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j ← ++ (byte) anim::j - (boolean~) anim::$16 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 - (byte~) anim::$15 ← (byte) anim::yidx - (byte) sinlen_y - (byte) anim::yidx ← (byte~) anim::$15 + (byte~) anim::$13 ← (byte) anim::yidx - (byte) sinlen_y + (byte) anim::yidx ← (byte~) anim::$13 to:anim::@3 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB) ← (byte) anim::x_msb (byte) sin_idx_x ← ++ (byte) sin_idx_x - (boolean~) anim::$17 ← (byte) sin_idx_x >= (byte) sinlen_x - (boolean~) anim::$18 ← ! (boolean~) anim::$17 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$15 ← (byte) sin_idx_x >= (byte) sinlen_x + (boolean~) anim::$16 ← ! (boolean~) anim::$15 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_y ← ++ (byte) sin_idx_y - (boolean~) anim::$19 ← (byte) sin_idx_y >= (byte) sinlen_y - (boolean~) anim::$20 ← ! (boolean~) anim::$19 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$17 ← (byte) sin_idx_y >= (byte) sinlen_y + (boolean~) anim::$18 ← ! (boolean~) anim::$17 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x ← (byte/signed byte/word/signed word) 0 @@ -2537,13 +2509,12 @@ gen_sprites: scope:[gen_sprites] from (byte) gen_sprites::i ← (byte/signed byte/word/signed word) 0 to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@1 - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml *idx (byte) gen_sprites::i - call gen_chargen_sprite (byte~) gen_sprites::$0 (byte*) gen_sprites::spr - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$2 + call gen_chargen_sprite *((byte[]) gen_sprites::cml + (byte) gen_sprites::i) (byte*) gen_sprites::spr + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i ← ++ (byte) gen_sprites::i - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@1 return @@ -2558,18 +2529,17 @@ gen_chargen_sprite: scope:[gen_chargen_sprite] from (byte) gen_chargen_sprite::y ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen *idx (byte) gen_chargen_sprite::y - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits ← *((byte*) gen_chargen_sprite::chargen + (byte) gen_chargen_sprite::y) (byte) gen_chargen_sprite::s_gen ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 - (boolean~) gen_chargen_sprite::$6 ← ! (boolean~) gen_chargen_sprite::$5 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 + (boolean~) gen_chargen_sprite::$5 ← ! (boolean~) gen_chargen_sprite::$4 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::b ← (byte/signed byte/word/signed word) 0 @@ -2578,18 +2548,18 @@ gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 1 to:gen_chargen_sprite::@3 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 gen_chargen_sprite::@5 - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c - (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c + (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt ← ++ (byte) gen_chargen_sprite::s_gen_cnt - (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 - (boolean~) gen_chargen_sprite::$10 ← ! (boolean~) gen_chargen_sprite::$9 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 + (boolean~) gen_chargen_sprite::$9 ← ! (boolean~) gen_chargen_sprite::$8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte) gen_chargen_sprite::b ← ++ (byte) gen_chargen_sprite::b - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen @@ -2600,18 +2570,18 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@5 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$12 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x ← ++ (byte) gen_chargen_sprite::x - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$14 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y ← ++ (byte) gen_chargen_sprite::y - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 @@ -2919,12 +2889,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 if((boolean~) progress_inc::$1) goto progress_inc::@1 to:progress_inc::@2 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars *idx (byte) progress_idx - *((byte*) progress_cursor) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte) progress_idx) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor) ← *((byte[]) progress_inc::progress_chars + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor ← ++ (byte*) progress_cursor (byte) progress_idx ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -2947,57 +2915,55 @@ anim: scope:[anim] from main::@3 to:anim::@1 anim::@1: scope:[anim] from anim anim::@3 (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x *idx (byte) anim::xidx - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x - *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y *idx (byte) anim::yidx - *((byte*) SPRITES_YPOS + (byte) anim::j2) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx ← (byte~) anim::$8 - (boolean~) anim::$9 ← (byte) anim::xidx >= (byte) sinlen_x - (boolean~) anim::$10 ← ! (boolean~) anim::$9 - if((boolean~) anim::$10) goto anim::@2 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x + (byte) anim::xidx) + (word) anim::x ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x + *((byte*) SPRITES_XPOS + (byte) anim::j2) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS + (byte) anim::j2) ← *((byte[]) sintab_y + (byte) anim::yidx) + (byte~) anim::$6 ← (byte) anim::xidx + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx ← (byte~) anim::$6 + (boolean~) anim::$7 ← (byte) anim::xidx >= (byte) sinlen_x + (boolean~) anim::$8 ← ! (boolean~) anim::$7 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 - (byte~) anim::$12 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx ← (byte~) anim::$12 - (boolean~) anim::$13 ← (byte) anim::yidx >= (byte) sinlen_y - (boolean~) anim::$14 ← ! (boolean~) anim::$13 - if((boolean~) anim::$14) goto anim::@3 + (byte~) anim::$10 ← (byte) anim::yidx + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx ← (byte~) anim::$10 + (boolean~) anim::$11 ← (byte) anim::yidx >= (byte) sinlen_y + (boolean~) anim::$12 ← ! (boolean~) anim::$11 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 - (byte~) anim::$11 ← (byte) anim::xidx - (byte) sinlen_x - (byte) anim::xidx ← (byte~) anim::$11 + (byte~) anim::$9 ← (byte) anim::xidx - (byte) sinlen_x + (byte) anim::xidx ← (byte~) anim::$9 to:anim::@2 anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j2 ← -- (byte) anim::j2 (byte) anim::j ← ++ (byte) anim::j - (boolean~) anim::$16 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 - (byte~) anim::$15 ← (byte) anim::yidx - (byte) sinlen_y - (byte) anim::yidx ← (byte~) anim::$15 + (byte~) anim::$13 ← (byte) anim::yidx - (byte) sinlen_y + (byte) anim::yidx ← (byte~) anim::$13 to:anim::@3 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB) ← (byte) anim::x_msb (byte) sin_idx_x ← ++ (byte) sin_idx_x - (boolean~) anim::$17 ← (byte) sin_idx_x >= (byte) sinlen_x - (boolean~) anim::$18 ← ! (boolean~) anim::$17 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$15 ← (byte) sin_idx_x >= (byte) sinlen_x + (boolean~) anim::$16 ← ! (boolean~) anim::$15 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_y ← ++ (byte) sin_idx_y - (boolean~) anim::$19 ← (byte) sin_idx_y >= (byte) sinlen_y - (boolean~) anim::$20 ← ! (boolean~) anim::$19 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$17 ← (byte) sin_idx_y >= (byte) sinlen_y + (boolean~) anim::$18 ← ! (boolean~) anim::$17 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x ← (byte/signed byte/word/signed word) 0 @@ -3053,17 +3019,16 @@ gen_sprites: scope:[gen_sprites] from init::@4 (byte) gen_sprites::i ← (byte/signed byte/word/signed word) 0 to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml *idx (byte) gen_sprites::i - (byte) gen_chargen_sprite::ch ← (byte~) gen_sprites::$0 + (byte) gen_chargen_sprite::ch ← *((byte[]) gen_sprites::cml + (byte) gen_sprites::i) (byte*) gen_chargen_sprite::sprite ← (byte*) gen_sprites::spr call gen_chargen_sprite param-assignment to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$2 + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i ← ++ (byte) gen_sprites::i - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -3078,18 +3043,17 @@ gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 (byte) gen_chargen_sprite::y ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen *idx (byte) gen_chargen_sprite::y - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits ← *((byte*) gen_chargen_sprite::chargen + (byte) gen_chargen_sprite::y) (byte) gen_chargen_sprite::s_gen ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 - (boolean~) gen_chargen_sprite::$6 ← ! (boolean~) gen_chargen_sprite::$5 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 + (boolean~) gen_chargen_sprite::$5 ← ! (boolean~) gen_chargen_sprite::$4 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::b ← (byte/signed byte/word/signed word) 0 @@ -3098,18 +3062,18 @@ gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 (byte) gen_chargen_sprite::c ← (byte/signed byte/word/signed word) 1 to:gen_chargen_sprite::@3 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 gen_chargen_sprite::@5 - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c - (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c + (byte) gen_chargen_sprite::s_gen ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt ← ++ (byte) gen_chargen_sprite::s_gen_cnt - (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 - (boolean~) gen_chargen_sprite::$10 ← ! (boolean~) gen_chargen_sprite::$9 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt == (byte/signed byte/word/signed word) 8 + (boolean~) gen_chargen_sprite::$9 ← ! (boolean~) gen_chargen_sprite::$8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte) gen_chargen_sprite::b ← ++ (byte) gen_chargen_sprite::b - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen @@ -3120,18 +3084,18 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen_cnt ← (byte/signed byte/word/signed word) 0 to:gen_chargen_sprite::@5 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$12 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x ← ++ (byte) gen_chargen_sprite::x - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$14 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y ← ++ (byte) gen_chargen_sprite::y - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT) ← (byte/signed byte/word/signed word) 55 @@ -3583,13 +3547,11 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#23 ← phi( progress_inc/(byte*) progress_cursor#33 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#25 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#25 - *((byte*) progress_cursor#23) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#23) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#25) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc (byte*) progress_cursor#24 ← phi( progress_inc/(byte*) progress_cursor#33 ) - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#24) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -3625,22 +3587,20 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#4 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x#0 ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb#1 ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx#1 ← (byte~) anim::$8 - (boolean~) anim::$9 ← (byte) anim::xidx#1 >= (byte) sinlen_x#0 - (boolean~) anim::$10 ← ! (boolean~) anim::$9 - if((boolean~) anim::$10) goto anim::@2 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (word) anim::x#0 ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb#1 ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) + (byte~) anim::$6 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx#1 ← (byte~) anim::$6 + (boolean~) anim::$7 ← (byte) anim::xidx#1 >= (byte) sinlen_x#0 + (boolean~) anim::$8 ← ! (boolean~) anim::$7 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) sin_idx_y#22 ← phi( anim::@1/(byte) sin_idx_y#25 anim::@6/(byte) sin_idx_y#26 ) @@ -3650,11 +3610,11 @@ anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::j#3 ← phi( anim::@1/(byte) anim::j#5 anim::@6/(byte) anim::j#6 ) (byte) anim::j2#5 ← phi( anim::@1/(byte) anim::j2#3 anim::@6/(byte) anim::j2#7 ) (byte) anim::yidx#4 ← phi( anim::@1/(byte) anim::yidx#3 anim::@6/(byte) anim::yidx#7 ) - (byte~) anim::$12 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx#1 ← (byte~) anim::$12 - (boolean~) anim::$13 ← (byte) anim::yidx#1 >= (byte) sinlen_y#0 - (boolean~) anim::$14 ← ! (boolean~) anim::$13 - if((boolean~) anim::$14) goto anim::@3 + (byte~) anim::$10 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx#1 ← (byte~) anim::$10 + (boolean~) anim::$11 ← (byte) anim::yidx#1 >= (byte) sinlen_y#0 + (boolean~) anim::$12 ← ! (boolean~) anim::$11 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) sin_idx_y#26 ← phi( anim::@1/(byte) sin_idx_y#25 ) @@ -3664,8 +3624,8 @@ anim::@6: scope:[anim] from anim::@1 (byte) anim::j2#7 ← phi( anim::@1/(byte) anim::j2#3 ) (byte) anim::yidx#7 ← phi( anim::@1/(byte) anim::yidx#3 ) (byte) anim::xidx#4 ← phi( anim::@1/(byte) anim::xidx#1 ) - (byte~) anim::$11 ← (byte) anim::xidx#4 - (byte) sinlen_x#0 - (byte) anim::xidx#2 ← (byte~) anim::$11 + (byte~) anim::$9 ← (byte) anim::xidx#4 - (byte) sinlen_x#0 + (byte) anim::xidx#2 ← (byte~) anim::$9 to:anim::@2 anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) sin_idx_y#19 ← phi( anim::@2/(byte) sin_idx_y#22 anim::@7/(byte) sin_idx_y#23 ) @@ -3678,8 +3638,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#4 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) sin_idx_y#23 ← phi( anim::@2/(byte) sin_idx_y#22 ) @@ -3689,8 +3649,8 @@ anim::@7: scope:[anim] from anim::@2 (byte) anim::j#4 ← phi( anim::@2/(byte) anim::j#3 ) (byte) anim::j2#6 ← phi( anim::@2/(byte) anim::j2#5 ) (byte) anim::yidx#5 ← phi( anim::@2/(byte) anim::yidx#1 ) - (byte~) anim::$15 ← (byte) anim::yidx#5 - (byte) sinlen_y#0 - (byte) anim::yidx#2 ← (byte~) anim::$15 + (byte~) anim::$13 ← (byte) anim::yidx#5 - (byte) sinlen_y#0 + (byte) anim::yidx#2 ← (byte~) anim::$13 to:anim::@3 anim::@8: scope:[anim] from anim::@3 (byte) sin_idx_y#14 ← phi( anim::@3/(byte) sin_idx_y#19 ) @@ -3698,17 +3658,17 @@ anim::@8: scope:[anim] from anim::@3 (byte) anim::x_msb#3 ← phi( anim::@3/(byte) anim::x_msb#4 ) *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#3 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10 - (boolean~) anim::$17 ← (byte) sin_idx_x#3 >= (byte) sinlen_x#0 - (boolean~) anim::$18 ← ! (boolean~) anim::$17 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$15 ← (byte) sin_idx_x#3 >= (byte) sinlen_x#0 + (boolean~) anim::$16 ← ! (boolean~) anim::$15 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#21 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#10 ← phi( anim::@8/(byte) sin_idx_y#14 anim::@9/(byte) sin_idx_y#15 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10 - (boolean~) anim::$19 ← (byte) sin_idx_y#3 >= (byte) sinlen_y#0 - (boolean~) anim::$20 ← ! (boolean~) anim::$19 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$17 ← (byte) sin_idx_y#3 >= (byte) sinlen_y#0 + (boolean~) anim::$18 ← ! (boolean~) anim::$17 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_y#15 ← phi( anim::@8/(byte) sin_idx_y#14 ) @@ -3779,8 +3739,7 @@ gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) (byte[]) gen_sprites::cml#1 ← phi( gen_sprites/(byte[]) gen_sprites::cml#0 gen_sprites::@3/(byte[]) gen_sprites::cml#2 ) - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml#1 *idx (byte) gen_sprites::i#2 - (byte) gen_chargen_sprite::ch#0 ← (byte~) gen_sprites::$0 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#1 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -3788,11 +3747,11 @@ gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte[]) gen_sprites::cml#2 ← phi( gen_sprites::@1/(byte[]) gen_sprites::cml#1 ) (byte) gen_sprites::i#3 ← phi( gen_sprites::@1/(byte) gen_sprites::i#2 ) (byte*) gen_sprites::spr#3 ← phi( gen_sprites::@1/(byte*) gen_sprites::spr#2 ) - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr#3 + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$2 + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr#3 + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#3 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -3812,8 +3771,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#2 ) - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 - (byte) gen_chargen_sprite::bits#0 ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -3827,10 +3785,10 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#7 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#9 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 - (boolean~) gen_chargen_sprite::$6 ← ! (boolean~) gen_chargen_sprite::$5 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 + (boolean~) gen_chargen_sprite::$5 ← ! (boolean~) gen_chargen_sprite::$4 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::chargen#8 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::chargen#9 ) @@ -3863,13 +3821,13 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::c#4 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#2 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte/signed byte/word/signed word) 8 - (boolean~) gen_chargen_sprite::$10 ← ! (boolean~) gen_chargen_sprite::$9 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte/signed byte/word/signed word) 8 + (boolean~) gen_chargen_sprite::$9 ← ! (boolean~) gen_chargen_sprite::$8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::chargen#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::chargen#6 ) @@ -3882,8 +3840,8 @@ gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::b#3 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::b#4 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte*) gen_chargen_sprite::chargen#6 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 ) @@ -3909,21 +3867,21 @@ gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte*) gen_chargen_sprite::sprite#6 ← phi( gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#8 ) (byte) gen_chargen_sprite::x#2 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::x#3 ) (byte) gen_chargen_sprite::bits#3 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::bits#4 ) - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits#1 ← (byte~) gen_chargen_sprite::$12 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits#1 ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#2 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#2 ← phi( gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#3 ) (byte) gen_chargen_sprite::y#3 ← phi( gen_chargen_sprite::@8/(byte) gen_chargen_sprite::y#4 ) (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#6 ) - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$14 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#3 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -4558,13 +4516,11 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#23 ← phi( progress_inc/(byte*) progress_cursor#33 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#25 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#25 - *((byte*) progress_cursor#23) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#23) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#25) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc (byte*) progress_cursor#24 ← phi( progress_inc/(byte*) progress_cursor#33 ) - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#24) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -4600,22 +4556,20 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#4 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x#0 ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb#1 ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx#1 ← (byte~) anim::$8 - (boolean~) anim::$9 ← (byte) anim::xidx#1 >= (byte) sinlen_x#0 - (boolean~) anim::$10 ← ! (boolean~) anim::$9 - if((boolean~) anim::$10) goto anim::@2 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (word) anim::x#0 ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb#1 ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) + (byte~) anim::$6 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx#1 ← (byte~) anim::$6 + (boolean~) anim::$7 ← (byte) anim::xidx#1 >= (byte) sinlen_x#0 + (boolean~) anim::$8 ← ! (boolean~) anim::$7 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) sin_idx_y#22 ← phi( anim::@1/(byte) sin_idx_y#25 anim::@6/(byte) sin_idx_y#26 ) @@ -4625,11 +4579,11 @@ anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::j#3 ← phi( anim::@1/(byte) anim::j#5 anim::@6/(byte) anim::j#6 ) (byte) anim::j2#5 ← phi( anim::@1/(byte) anim::j2#3 anim::@6/(byte) anim::j2#7 ) (byte) anim::yidx#4 ← phi( anim::@1/(byte) anim::yidx#3 anim::@6/(byte) anim::yidx#7 ) - (byte~) anim::$12 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx#1 ← (byte~) anim::$12 - (boolean~) anim::$13 ← (byte) anim::yidx#1 >= (byte) sinlen_y#0 - (boolean~) anim::$14 ← ! (boolean~) anim::$13 - if((boolean~) anim::$14) goto anim::@3 + (byte~) anim::$10 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx#1 ← (byte~) anim::$10 + (boolean~) anim::$11 ← (byte) anim::yidx#1 >= (byte) sinlen_y#0 + (boolean~) anim::$12 ← ! (boolean~) anim::$11 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) sin_idx_y#26 ← phi( anim::@1/(byte) sin_idx_y#25 ) @@ -4639,8 +4593,8 @@ anim::@6: scope:[anim] from anim::@1 (byte) anim::j2#7 ← phi( anim::@1/(byte) anim::j2#3 ) (byte) anim::yidx#7 ← phi( anim::@1/(byte) anim::yidx#3 ) (byte) anim::xidx#4 ← phi( anim::@1/(byte) anim::xidx#1 ) - (byte~) anim::$11 ← (byte) anim::xidx#4 - (byte) sinlen_x#0 - (byte) anim::xidx#2 ← (byte~) anim::$11 + (byte~) anim::$9 ← (byte) anim::xidx#4 - (byte) sinlen_x#0 + (byte) anim::xidx#2 ← (byte~) anim::$9 to:anim::@2 anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) sin_idx_y#19 ← phi( anim::@2/(byte) sin_idx_y#22 anim::@7/(byte) sin_idx_y#23 ) @@ -4653,8 +4607,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#4 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) sin_idx_y#23 ← phi( anim::@2/(byte) sin_idx_y#22 ) @@ -4664,8 +4618,8 @@ anim::@7: scope:[anim] from anim::@2 (byte) anim::j#4 ← phi( anim::@2/(byte) anim::j#3 ) (byte) anim::j2#6 ← phi( anim::@2/(byte) anim::j2#5 ) (byte) anim::yidx#5 ← phi( anim::@2/(byte) anim::yidx#1 ) - (byte~) anim::$15 ← (byte) anim::yidx#5 - (byte) sinlen_y#0 - (byte) anim::yidx#2 ← (byte~) anim::$15 + (byte~) anim::$13 ← (byte) anim::yidx#5 - (byte) sinlen_y#0 + (byte) anim::yidx#2 ← (byte~) anim::$13 to:anim::@3 anim::@8: scope:[anim] from anim::@3 (byte) sin_idx_y#14 ← phi( anim::@3/(byte) sin_idx_y#19 ) @@ -4673,17 +4627,17 @@ anim::@8: scope:[anim] from anim::@3 (byte) anim::x_msb#3 ← phi( anim::@3/(byte) anim::x_msb#4 ) *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#3 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10 - (boolean~) anim::$17 ← (byte) sin_idx_x#3 >= (byte) sinlen_x#0 - (boolean~) anim::$18 ← ! (boolean~) anim::$17 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$15 ← (byte) sin_idx_x#3 >= (byte) sinlen_x#0 + (boolean~) anim::$16 ← ! (boolean~) anim::$15 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#21 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#10 ← phi( anim::@8/(byte) sin_idx_y#14 anim::@9/(byte) sin_idx_y#15 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10 - (boolean~) anim::$19 ← (byte) sin_idx_y#3 >= (byte) sinlen_y#0 - (boolean~) anim::$20 ← ! (boolean~) anim::$19 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$17 ← (byte) sin_idx_y#3 >= (byte) sinlen_y#0 + (boolean~) anim::$18 ← ! (boolean~) anim::$17 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_y#15 ← phi( anim::@8/(byte) sin_idx_y#14 ) @@ -4754,8 +4708,7 @@ gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) (byte[]) gen_sprites::cml#1 ← phi( gen_sprites/(byte[]) gen_sprites::cml#0 gen_sprites::@3/(byte[]) gen_sprites::cml#2 ) - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml#1 *idx (byte) gen_sprites::i#2 - (byte) gen_chargen_sprite::ch#0 ← (byte~) gen_sprites::$0 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#1 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -4763,11 +4716,11 @@ gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte[]) gen_sprites::cml#2 ← phi( gen_sprites::@1/(byte[]) gen_sprites::cml#1 ) (byte) gen_sprites::i#3 ← phi( gen_sprites::@1/(byte) gen_sprites::i#2 ) (byte*) gen_sprites::spr#3 ← phi( gen_sprites::@1/(byte*) gen_sprites::spr#2 ) - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr#3 + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$2 + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr#3 + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#3 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -4787,8 +4740,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#2 ) - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 - (byte) gen_chargen_sprite::bits#0 ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -4802,10 +4754,10 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#7 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#9 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 - (boolean~) gen_chargen_sprite::$6 ← ! (boolean~) gen_chargen_sprite::$5 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 + (boolean~) gen_chargen_sprite::$5 ← ! (boolean~) gen_chargen_sprite::$4 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::chargen#8 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::chargen#9 ) @@ -4838,13 +4790,13 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::c#4 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#2 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte/signed byte/word/signed word) 8 - (boolean~) gen_chargen_sprite::$10 ← ! (boolean~) gen_chargen_sprite::$9 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte/signed byte/word/signed word) 8 + (boolean~) gen_chargen_sprite::$9 ← ! (boolean~) gen_chargen_sprite::$8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::chargen#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::chargen#6 ) @@ -4857,8 +4809,8 @@ gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::b#3 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::b#4 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte*) gen_chargen_sprite::chargen#6 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 ) @@ -4884,21 +4836,21 @@ gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte*) gen_chargen_sprite::sprite#6 ← phi( gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#8 ) (byte) gen_chargen_sprite::x#2 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::x#3 ) (byte) gen_chargen_sprite::bits#3 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::bits#4 ) - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits#1 ← (byte~) gen_chargen_sprite::$12 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits#1 ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#2 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#2 ← phi( gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#3 ) (byte) gen_chargen_sprite::y#3 ← phi( gen_chargen_sprite::@8/(byte) gen_chargen_sprite::y#4 ) (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#6 ) - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$14 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#3 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -5274,26 +5226,24 @@ INITIAL SSA SYMBOL TABLE (byte*) addMEMtoFAC::mem#2 (void()) anim() (word~) anim::$0 -(byte~) anim::$1 -(boolean~) anim::$10 -(byte~) anim::$11 -(byte~) anim::$12 -(boolean~) anim::$13 +(word~) anim::$1 +(byte~) anim::$10 +(boolean~) anim::$11 +(boolean~) anim::$12 +(byte~) anim::$13 (boolean~) anim::$14 -(byte~) anim::$15 +(boolean~) anim::$15 (boolean~) anim::$16 (boolean~) anim::$17 (boolean~) anim::$18 -(boolean~) anim::$19 -(word~) anim::$2 -(boolean~) anim::$20 +(byte~) anim::$2 (byte~) anim::$3 (byte~) anim::$4 (byte~) anim::$5 (byte~) anim::$6 -(byte~) anim::$7 -(byte~) anim::$8 -(boolean~) anim::$9 +(boolean~) anim::$7 +(boolean~) anim::$8 +(byte~) anim::$9 (label) anim::@1 (label) anim::@10 (label) anim::@2 @@ -5371,18 +5321,17 @@ INITIAL SSA SYMBOL TABLE (word~) gen_chargen_sprite::$0 (word~) gen_chargen_sprite::$1 (boolean~) gen_chargen_sprite::$10 -(boolean~) gen_chargen_sprite::$11 -(byte~) gen_chargen_sprite::$12 -(boolean~) gen_chargen_sprite::$13 -(byte*~) gen_chargen_sprite::$14 -(boolean~) gen_chargen_sprite::$15 +(byte~) gen_chargen_sprite::$11 +(boolean~) gen_chargen_sprite::$12 +(byte*~) gen_chargen_sprite::$13 +(boolean~) gen_chargen_sprite::$14 (byte*~) gen_chargen_sprite::$2 (byte~) gen_chargen_sprite::$3 -(byte~) gen_chargen_sprite::$4 +(boolean~) gen_chargen_sprite::$4 (boolean~) gen_chargen_sprite::$5 -(boolean~) gen_chargen_sprite::$6 +(byte~) gen_chargen_sprite::$6 (byte~) gen_chargen_sprite::$7 -(byte~) gen_chargen_sprite::$8 +(boolean~) gen_chargen_sprite::$8 (boolean~) gen_chargen_sprite::$9 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@10 @@ -5693,9 +5642,8 @@ INITIAL SSA SYMBOL TABLE (byte*) gen_sintab::sintab#8 (byte*) gen_sintab::sintab#9 (void()) gen_sprites() -(byte~) gen_sprites::$0 -(byte*~) gen_sprites::$2 -(boolean~) gen_sprites::$3 +(byte*~) gen_sprites::$1 +(boolean~) gen_sprites::$2 (label) gen_sprites::@1 (label) gen_sprites::@3 (label) gen_sprites::@return @@ -5943,8 +5891,6 @@ INITIAL SSA SYMBOL TABLE (void()) progress_inc() (boolean~) progress_inc::$0 (boolean~) progress_inc::$1 -(byte~) progress_inc::$2 -(byte~) progress_inc::$3 (label) progress_inc::@1 (label) progress_inc::@2 (label) progress_inc::@return @@ -6051,12 +5997,12 @@ INITIAL SSA SYMBOL TABLE (label) subFACfromARG::@return Inversing boolean not (boolean~) progress_inc::$1 ← (byte) progress_idx#10 != (byte/signed byte/word/signed word) 8 from (boolean~) progress_inc::$0 ← (byte) progress_idx#10 == (byte/signed byte/word/signed word) 8 -Inversing boolean not (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 from (boolean~) anim::$9 ← (byte) anim::xidx#1 >= (byte) sinlen_x#0 -Inversing boolean not (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 from (boolean~) anim::$13 ← (byte) anim::yidx#1 >= (byte) sinlen_y#0 -Inversing boolean not (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 from (boolean~) anim::$17 ← (byte) sin_idx_x#3 >= (byte) sinlen_x#0 -Inversing boolean not (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 from (boolean~) anim::$19 ← (byte) sin_idx_y#3 >= (byte) sinlen_y#0 -Inversing boolean not (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 from (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$4 != (byte/signed byte/word/signed word) 0 -Inversing boolean not (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 from (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte/signed byte/word/signed word) 8 +Inversing boolean not (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 from (boolean~) anim::$7 ← (byte) anim::xidx#1 >= (byte) sinlen_x#0 +Inversing boolean not (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 from (boolean~) anim::$11 ← (byte) anim::yidx#1 >= (byte) sinlen_y#0 +Inversing boolean not (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 from (boolean~) anim::$15 ← (byte) sin_idx_x#3 >= (byte) sinlen_x#0 +Inversing boolean not (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 from (boolean~) anim::$17 ← (byte) sin_idx_y#3 >= (byte) sinlen_y#0 +Inversing boolean not (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 from (boolean~) gen_chargen_sprite::$4 ← (byte~) gen_chargen_sprite::$3 != (byte/signed byte/word/signed word) 0 +Inversing boolean not (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 from (boolean~) gen_chargen_sprite::$8 ← (byte) gen_chargen_sprite::s_gen_cnt#1 == (byte/signed byte/word/signed word) 8 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -6360,13 +6306,11 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#23 ← phi( progress_inc/(byte*) progress_cursor#33 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#25 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#25 - *((byte*) progress_cursor#23) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#23) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#25) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc (byte*) progress_cursor#24 ← phi( progress_inc/(byte*) progress_cursor#33 ) - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#24) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -6402,21 +6346,19 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#4 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word~) anim::$2 ← (word~) anim::$0 + (byte~) anim::$1 - (word) anim::x#0 ← (word~) anim::$2 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte~) anim::$5 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte) anim::x_msb#1 ← (byte~) anim::$5 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 - (byte~) anim::$8 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (byte) anim::xidx#1 ← (byte~) anim::$8 - (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 - if((boolean~) anim::$10) goto anim::@2 + (word~) anim::$1 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (word) anim::x#0 ← (word~) anim::$1 + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte~) anim::$4 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte) anim::x_msb#1 ← (byte~) anim::$4 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) + (byte~) anim::$6 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 + (byte) anim::xidx#1 ← (byte~) anim::$6 + (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) sin_idx_y#22 ← phi( anim::@1/(byte) sin_idx_y#25 anim::@6/(byte) sin_idx_y#26 ) @@ -6426,10 +6368,10 @@ anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::j#3 ← phi( anim::@1/(byte) anim::j#5 anim::@6/(byte) anim::j#6 ) (byte) anim::j2#5 ← phi( anim::@1/(byte) anim::j2#3 anim::@6/(byte) anim::j2#7 ) (byte) anim::yidx#4 ← phi( anim::@1/(byte) anim::yidx#3 anim::@6/(byte) anim::yidx#7 ) - (byte~) anim::$12 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 - (byte) anim::yidx#1 ← (byte~) anim::$12 - (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 - if((boolean~) anim::$14) goto anim::@3 + (byte~) anim::$10 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 + (byte) anim::yidx#1 ← (byte~) anim::$10 + (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) sin_idx_y#26 ← phi( anim::@1/(byte) sin_idx_y#25 ) @@ -6439,8 +6381,8 @@ anim::@6: scope:[anim] from anim::@1 (byte) anim::j2#7 ← phi( anim::@1/(byte) anim::j2#3 ) (byte) anim::yidx#7 ← phi( anim::@1/(byte) anim::yidx#3 ) (byte) anim::xidx#4 ← phi( anim::@1/(byte) anim::xidx#1 ) - (byte~) anim::$11 ← (byte) anim::xidx#4 - (byte) sinlen_x#0 - (byte) anim::xidx#2 ← (byte~) anim::$11 + (byte~) anim::$9 ← (byte) anim::xidx#4 - (byte) sinlen_x#0 + (byte) anim::xidx#2 ← (byte~) anim::$9 to:anim::@2 anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) sin_idx_y#19 ← phi( anim::@2/(byte) sin_idx_y#22 anim::@7/(byte) sin_idx_y#23 ) @@ -6453,8 +6395,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#4 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) sin_idx_y#23 ← phi( anim::@2/(byte) sin_idx_y#22 ) @@ -6464,8 +6406,8 @@ anim::@7: scope:[anim] from anim::@2 (byte) anim::j#4 ← phi( anim::@2/(byte) anim::j#3 ) (byte) anim::j2#6 ← phi( anim::@2/(byte) anim::j2#5 ) (byte) anim::yidx#5 ← phi( anim::@2/(byte) anim::yidx#1 ) - (byte~) anim::$15 ← (byte) anim::yidx#5 - (byte) sinlen_y#0 - (byte) anim::yidx#2 ← (byte~) anim::$15 + (byte~) anim::$13 ← (byte) anim::yidx#5 - (byte) sinlen_y#0 + (byte) anim::yidx#2 ← (byte~) anim::$13 to:anim::@3 anim::@8: scope:[anim] from anim::@3 (byte) sin_idx_y#14 ← phi( anim::@3/(byte) sin_idx_y#19 ) @@ -6473,15 +6415,15 @@ anim::@8: scope:[anim] from anim::@3 (byte) anim::x_msb#3 ← phi( anim::@3/(byte) anim::x_msb#4 ) *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#3 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10 - (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#21 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#10 ← phi( anim::@8/(byte) sin_idx_y#14 anim::@9/(byte) sin_idx_y#15 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10 - (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_y#15 ← phi( anim::@8/(byte) sin_idx_y#14 ) @@ -6552,8 +6494,7 @@ gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) (byte[]) gen_sprites::cml#1 ← phi( gen_sprites/(byte[]) gen_sprites::cml#0 gen_sprites::@3/(byte[]) gen_sprites::cml#2 ) - (byte~) gen_sprites::$0 ← (byte[]) gen_sprites::cml#1 *idx (byte) gen_sprites::i#2 - (byte) gen_chargen_sprite::ch#0 ← (byte~) gen_sprites::$0 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#1 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -6561,11 +6502,11 @@ gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte[]) gen_sprites::cml#2 ← phi( gen_sprites::@1/(byte[]) gen_sprites::cml#1 ) (byte) gen_sprites::i#3 ← phi( gen_sprites::@1/(byte) gen_sprites::i#2 ) (byte*) gen_sprites::spr#3 ← phi( gen_sprites::@1/(byte*) gen_sprites::spr#2 ) - (byte*~) gen_sprites::$2 ← (byte*) gen_sprites::spr#3 + (byte/signed byte/word/signed word) 64 - (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$2 + (byte*~) gen_sprites::$1 ← (byte*) gen_sprites::spr#3 + (byte/signed byte/word/signed word) 64 + (byte*) gen_sprites::spr#1 ← (byte*~) gen_sprites::$1 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#3 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -6585,8 +6526,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#2 ) - (byte~) gen_chargen_sprite::$3 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 - (byte) gen_chargen_sprite::bits#0 ← (byte~) gen_chargen_sprite::$3 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -6600,9 +6540,9 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#7 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#9 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::chargen#8 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::chargen#9 ) @@ -6635,12 +6575,12 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::c#4 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte~) gen_chargen_sprite::$8 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#2 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$8 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte~) gen_chargen_sprite::$7 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::chargen#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::chargen#6 ) @@ -6653,8 +6593,8 @@ gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::b#3 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::b#4 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte*) gen_chargen_sprite::chargen#6 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 ) @@ -6680,21 +6620,21 @@ gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte*) gen_chargen_sprite::sprite#6 ← phi( gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#8 ) (byte) gen_chargen_sprite::x#2 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::x#3 ) (byte) gen_chargen_sprite::bits#3 ← phi( gen_chargen_sprite::@5/(byte) gen_chargen_sprite::bits#4 ) - (byte~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::bits#1 ← (byte~) gen_chargen_sprite::$12 + (byte~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::bits#1 ← (byte~) gen_chargen_sprite::$11 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#2 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#2 ← phi( gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#3 ) (byte) gen_chargen_sprite::y#3 ← phi( gen_chargen_sprite::@8/(byte) gen_chargen_sprite::y#4 ) (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#6 ) - (byte*~) gen_chargen_sprite::$14 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 - (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$14 + (byte*~) gen_chargen_sprite::$13 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 + (byte*) gen_chargen_sprite::sprite#2 ← (byte*~) gen_chargen_sprite::$13 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#3 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -7132,23 +7072,23 @@ Alias (byte*) progress_cursor#24 = (byte*) progress_cursor#33 Alias (byte) progress_idx#12 = (byte) progress_idx#26 (byte) progress_idx#25 Alias (byte*) progress_cursor#11 = (byte*) progress_cursor#25 (byte*) progress_cursor#23 Alias (byte) progress_idx#35 = (byte) progress_idx#39 (byte) progress_idx#7 -Alias (word) anim::x#0 = (word~) anim::$2 -Alias (byte) anim::x_msb#1 = (byte~) anim::$5 (byte) anim::x_msb#7 -Alias (byte) anim::xidx#1 = (byte~) anim::$8 (byte) anim::xidx#4 -Alias (byte) anim::yidx#1 = (byte~) anim::$12 (byte) anim::yidx#5 +Alias (word) anim::x#0 = (word~) anim::$1 +Alias (byte) anim::x_msb#1 = (byte~) anim::$4 (byte) anim::x_msb#7 +Alias (byte) anim::xidx#1 = (byte~) anim::$6 (byte) anim::xidx#4 +Alias (byte) anim::yidx#1 = (byte~) anim::$10 (byte) anim::yidx#5 Alias (byte) anim::yidx#3 = (byte) anim::yidx#7 Alias (byte) anim::j2#3 = (byte) anim::j2#7 Alias (byte) anim::j#5 = (byte) anim::j#6 Alias (byte) sin_idx_x#24 = (byte) sin_idx_x#25 Alias (byte) sin_idx_y#25 = (byte) sin_idx_y#26 -Alias (byte) anim::xidx#2 = (byte~) anim::$11 +Alias (byte) anim::xidx#2 = (byte~) anim::$9 Alias (byte) anim::j2#5 = (byte) anim::j2#6 Alias (byte) anim::j#3 = (byte) anim::j#4 Alias (byte) anim::xidx#6 = (byte) anim::xidx#7 Alias (byte) anim::x_msb#5 = (byte) anim::x_msb#6 Alias (byte) sin_idx_x#18 = (byte) sin_idx_x#19 Alias (byte) sin_idx_y#22 = (byte) sin_idx_y#23 -Alias (byte) anim::yidx#2 = (byte~) anim::$15 +Alias (byte) anim::yidx#2 = (byte~) anim::$13 Alias (byte) anim::x_msb#3 = (byte) anim::x_msb#4 Alias (byte) sin_idx_x#10 = (byte) sin_idx_x#14 Alias (byte) sin_idx_y#14 = (byte) sin_idx_y#19 (byte) sin_idx_y#15 @@ -7159,13 +7099,11 @@ Alias (byte*) place_sprites::sprites_ptr#0 = (byte*~) place_sprites::$0 Alias (byte) place_sprites::spr_id#0 = (byte~) place_sprites::$2 Alias (byte) place_sprites::spr_x#1 = (byte~) place_sprites::$3 Alias (byte) place_sprites::col#1 = (byte~) place_sprites::$5 -Alias (byte) gen_chargen_sprite::ch#0 = (byte~) gen_sprites::$0 Alias (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#3 Alias (byte) gen_sprites::i#2 = (byte) gen_sprites::i#3 Alias (byte[]) gen_sprites::cml#1 = (byte[]) gen_sprites::cml#2 -Alias (byte*) gen_sprites::spr#1 = (byte*~) gen_sprites::$2 +Alias (byte*) gen_sprites::spr#1 = (byte*~) gen_sprites::$1 Alias (byte*) gen_chargen_sprite::chargen#0 = (byte*~) gen_chargen_sprite::$2 -Alias (byte) gen_chargen_sprite::bits#0 = (byte~) gen_chargen_sprite::$3 Alias (byte) gen_chargen_sprite::s_gen#7 = (byte) gen_chargen_sprite::s_gen#8 Alias (byte) gen_chargen_sprite::s_gen_cnt#6 = (byte) gen_chargen_sprite::s_gen_cnt#7 Alias (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#9 @@ -7173,7 +7111,7 @@ Alias (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#8 Alias (byte) gen_chargen_sprite::x#7 = (byte) gen_chargen_sprite::x#8 Alias (byte) gen_chargen_sprite::y#10 = (byte) gen_chargen_sprite::y#9 Alias (byte*) gen_chargen_sprite::chargen#8 = (byte*) gen_chargen_sprite::chargen#9 -Alias (byte) gen_chargen_sprite::s_gen#1 = (byte~) gen_chargen_sprite::$8 (byte) gen_chargen_sprite::s_gen#4 +Alias (byte) gen_chargen_sprite::s_gen#1 = (byte~) gen_chargen_sprite::$7 (byte) gen_chargen_sprite::s_gen#4 Alias (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#5 Alias (byte) gen_chargen_sprite::b#3 = (byte) gen_chargen_sprite::b#4 Alias (byte) gen_chargen_sprite::c#2 = (byte) gen_chargen_sprite::c#5 @@ -7188,8 +7126,8 @@ Alias (byte) gen_chargen_sprite::y#3 = (byte) gen_chargen_sprite::y#4 (byte) gen Alias (byte*) gen_chargen_sprite::chargen#2 = (byte*) gen_chargen_sprite::chargen#3 (byte*) gen_chargen_sprite::chargen#4 Alias (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#9 Alias (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#8 -Alias (byte) gen_chargen_sprite::bits#1 = (byte~) gen_chargen_sprite::$12 -Alias (byte*) gen_chargen_sprite::sprite#2 = (byte*~) gen_chargen_sprite::$14 +Alias (byte) gen_chargen_sprite::bits#1 = (byte~) gen_chargen_sprite::$11 +Alias (byte*) gen_chargen_sprite::sprite#2 = (byte*~) gen_chargen_sprite::$13 Alias (word) setFAC::w#0 = (word~) gen_sintab::$0 Alias (byte) gen_sintab::min#2 = (byte) gen_sintab::min#3 (byte) gen_sintab::min#4 Alias (byte[]) gen_sintab::f_min#0 = (byte[]) gen_sintab::f_min#8 (byte[]) gen_sintab::f_min#5 (byte[]) gen_sintab::f_min#1 (byte[]) gen_sintab::f_min#15 (byte[]) gen_sintab::f_min#13 (byte[]) gen_sintab::f_min#11 (byte[]) gen_sintab::f_min#9 (byte[]) gen_sintab::f_min#6 (byte[]) gen_sintab::f_min#2 (byte[]) gen_sintab::f_min#3 (byte[]) gen_sintab::f_min#19 @@ -7468,12 +7406,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#24) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -7503,18 +7439,16 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#3 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (word~) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 - if((boolean~) anim::$10) goto anim::@2 + (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) sin_idx_y#22 ← phi( anim::@1/(byte) sin_idx_y#25 anim::@6/(byte) sin_idx_y#25 ) @@ -7525,8 +7459,8 @@ anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::j2#5 ← phi( anim::@1/(byte) anim::j2#3 anim::@6/(byte) anim::j2#3 ) (byte) anim::yidx#4 ← phi( anim::@1/(byte) anim::yidx#3 anim::@6/(byte) anim::yidx#3 ) (byte) anim::yidx#1 ← (byte) anim::yidx#4 + (byte/signed byte/word/signed word) 8 - (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 - if((boolean~) anim::$14) goto anim::@3 + (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (byte) sinlen_x#0 @@ -7542,8 +7476,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#4 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (byte) sinlen_y#0 @@ -7551,15 +7485,15 @@ anim::@7: scope:[anim] from anim::@2 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#3 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10 - (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#20 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#10 ← phi( anim::@8/(byte) sin_idx_y#14 anim::@9/(byte) sin_idx_y#14 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10 - (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x#4 ← (byte/signed byte/word/signed word) 0 @@ -7620,15 +7554,15 @@ gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) (byte[]) gen_sprites::cml#1 ← phi( gen_sprites/(byte[]) gen_sprites::cml#0 gen_sprites::@3/(byte[]) gen_sprites::cml#1 ) - (byte) gen_chargen_sprite::ch#0 ← (byte[]) gen_sprites::cml#1 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#1 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -7647,7 +7581,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#2 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -7661,9 +7595,9 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#7 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@2/(byte*) gen_chargen_sprite::chargen#8 gen_chargen_sprite::@6/(byte*) gen_chargen_sprite::chargen#8 ) @@ -7689,11 +7623,11 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::c#4 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#2 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::chargen#2 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::chargen#5 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::chargen#5 ) @@ -7706,8 +7640,8 @@ gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::b#3 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::b#3 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 @@ -7720,14 +7654,14 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#2 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#3 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -8206,12 +8140,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#24) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -8241,24 +8173,22 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (word~) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 - if((boolean~) anim::$10) goto anim::@2 + (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 - (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 - if((boolean~) anim::$14) goto anim::@3 + (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (byte) sinlen_x#0 @@ -8268,8 +8198,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#3 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (byte) sinlen_y#0 @@ -8277,14 +8207,14 @@ anim::@7: scope:[anim] from anim::@2 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10 - (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#11 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10 - (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x#4 ← (byte/signed byte/word/signed word) 0 @@ -8344,15 +8274,15 @@ gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) (byte[]) gen_sprites::cml#1 ← phi( gen_sprites/(byte[]) gen_sprites::cml#0 gen_sprites::@3/(byte[]) gen_sprites::cml#1 ) - (byte) gen_chargen_sprite::ch#0 ← (byte[]) gen_sprites::cml#1 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#1 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -8371,7 +8301,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#2 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -8385,9 +8315,9 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::c#1 ) @@ -8406,19 +8336,19 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::c#2 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#2 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen_cnt#2 ) (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 @@ -8431,14 +8361,14 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#2 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#3 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -8919,12 +8849,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#24 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#24) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#24) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#24 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -8954,24 +8882,22 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (word~) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 - if((boolean~) anim::$10) goto anim::@2 + (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 - (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 - if((boolean~) anim::$14) goto anim::@3 + (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (byte) sinlen_x#0 @@ -8981,8 +8907,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#3 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (byte) sinlen_y#0 @@ -8990,14 +8916,14 @@ anim::@7: scope:[anim] from anim::@2 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#10 - (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#11 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#10 - (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x#4 ← (byte/signed byte/word/signed word) 0 @@ -9057,15 +8983,15 @@ gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) (byte[]) gen_sprites::cml#1 ← phi( gen_sprites/(byte[]) gen_sprites::cml#0 ) - (byte) gen_chargen_sprite::ch#0 ← (byte[]) gen_sprites::cml#1 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#1 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -9084,7 +9010,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#12 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#2 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -9098,9 +9024,9 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::c#1 ) @@ -9119,19 +9045,19 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::c#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::c#3 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#2 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#2 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen_cnt#2 ) (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 @@ -9144,14 +9070,14 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#3 << (byte/signed byte/word/signed word) 1 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#2 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#3 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -9559,12 +9485,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -9590,24 +9514,22 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (word~) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 - if((boolean~) anim::$10) goto anim::@2 + (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 - (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 - if((boolean~) anim::$14) goto anim::@3 + (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (byte) sinlen_x#0 @@ -9617,8 +9539,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#3 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (byte) sinlen_y#0 @@ -9626,14 +9548,14 @@ anim::@7: scope:[anim] from anim::@2 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 - (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#11 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 - (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x#4 ← (byte/signed byte/word/signed word) 0 @@ -9691,15 +9613,15 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -9716,7 +9638,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -9730,9 +9652,9 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::c#1 ) @@ -9746,19 +9668,19 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen_cnt#2 ) (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 @@ -9771,14 +9693,14 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#10 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -10127,12 +10049,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -10158,24 +10078,22 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (word~) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 - (boolean~) anim::$10 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 - if((boolean~) anim::$10) goto anim::@2 + (boolean~) anim::$8 ← (byte) anim::xidx#1 < (byte) sinlen_x#0 + if((boolean~) anim::$8) goto anim::@2 to:anim::@6 anim::@2: scope:[anim] from anim::@1 anim::@6 (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 - (boolean~) anim::$14 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 - if((boolean~) anim::$14) goto anim::@3 + (boolean~) anim::$12 ← (byte) anim::yidx#1 < (byte) sinlen_y#0 + if((boolean~) anim::$12) goto anim::@3 to:anim::@7 anim::@6: scope:[anim] from anim::@1 (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (byte) sinlen_x#0 @@ -10185,8 +10103,8 @@ anim::@3: scope:[anim] from anim::@2 anim::@7 (byte) anim::j2#1 ← -- (byte) anim::j2#3 (byte) anim::j2#2 ← -- (byte) anim::j2#1 (byte) anim::j#1 ← ++ (byte) anim::j#2 - (boolean~) anim::$16 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) anim::$16) goto anim::@1 + (boolean~) anim::$14 ← (byte) anim::j#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) anim::$14) goto anim::@1 to:anim::@8 anim::@7: scope:[anim] from anim::@2 (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (byte) sinlen_y#0 @@ -10194,14 +10112,14 @@ anim::@7: scope:[anim] from anim::@2 anim::@8: scope:[anim] from anim::@3 *((byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 - (boolean~) anim::$18 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 - if((boolean~) anim::$18) goto anim::@4 + (boolean~) anim::$16 ← (byte) sin_idx_x#3 < (byte) sinlen_x#0 + if((boolean~) anim::$16) goto anim::@4 to:anim::@9 anim::@4: scope:[anim] from anim::@8 anim::@9 (byte) sin_idx_x#11 ← phi( anim::@8/(byte) sin_idx_x#3 anim::@9/(byte) sin_idx_x#4 ) (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 - (boolean~) anim::$20 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 - if((boolean~) anim::$20) goto anim::@5 + (boolean~) anim::$18 ← (byte) sin_idx_y#3 < (byte) sinlen_y#0 + if((boolean~) anim::$18) goto anim::@5 to:anim::@10 anim::@9: scope:[anim] from anim::@8 (byte) sin_idx_x#4 ← (byte/signed byte/word/signed word) 0 @@ -10259,15 +10177,15 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 - (boolean~) gen_sprites::$3 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 - if((boolean~) gen_sprites::$3) goto gen_sprites::@1 + (boolean~) gen_sprites::$2 ← (byte) gen_sprites::i#1 != (byte/signed byte/word/signed word) 7 + if((boolean~) gen_sprites::$2) goto gen_sprites::@1 to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 return @@ -10284,7 +10202,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -10298,9 +10216,9 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - (boolean~) gen_chargen_sprite::$6 ← (byte~) gen_chargen_sprite::$4 == (byte/signed byte/word/signed word) 0 - if((boolean~) gen_chargen_sprite::$6) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + (boolean~) gen_chargen_sprite::$5 ← (byte~) gen_chargen_sprite::$3 == (byte/signed byte/word/signed word) 0 + if((boolean~) gen_chargen_sprite::$5) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::c#1 ) @@ -10314,19 +10232,19 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 - (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@5 + (boolean~) gen_chargen_sprite::$9 ← (byte) gen_chargen_sprite::s_gen_cnt#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$9) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen_cnt#2 ) (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte) gen_chargen_sprite::s_gen#2 ) (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 - (boolean~) gen_chargen_sprite::$11 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 - if((boolean~) gen_chargen_sprite::$11) goto gen_chargen_sprite::@4 + (boolean~) gen_chargen_sprite::$10 ← (byte) gen_chargen_sprite::b#1 != (byte/signed byte/word/signed word) 3 + if((boolean~) gen_chargen_sprite::$10) goto gen_chargen_sprite::@4 to:gen_chargen_sprite::@8 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 @@ -10339,14 +10257,14 @@ gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 - (boolean~) gen_chargen_sprite::$13 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$13) goto gen_chargen_sprite::@2 + (boolean~) gen_chargen_sprite::$12 ← (byte) gen_chargen_sprite::x#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$12) goto gen_chargen_sprite::@2 to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#10 - (boolean~) gen_chargen_sprite::$15 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 - if((boolean~) gen_chargen_sprite::$15) goto gen_chargen_sprite::@1 + (boolean~) gen_chargen_sprite::$14 ← (byte) gen_chargen_sprite::y#1 != (byte/signed byte/word/signed word) 8 + if((boolean~) gen_chargen_sprite::$14) goto gen_chargen_sprite::@1 to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 *((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 @@ -10472,18 +10390,18 @@ Simple Condition (boolean~) main::$1 if(*((byte*) RASTER#0)!=(byte/word/signed w Simple Condition (boolean~) init::$2 if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 Simple Condition (boolean~) clear_screen::$1 if((byte*) clear_screen::sc#1<(byte*~) clear_screen::$0) goto clear_screen::@1 Simple Condition (boolean~) progress_inc::$1 if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 -Simple Condition (boolean~) anim::$10 if((byte) anim::xidx#1<(byte) sinlen_x#0) goto anim::@2 -Simple Condition (boolean~) anim::$14 if((byte) anim::yidx#1<(byte) sinlen_y#0) goto anim::@3 -Simple Condition (boolean~) anim::$16 if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 -Simple Condition (boolean~) anim::$18 if((byte) sin_idx_x#3<(byte) sinlen_x#0) goto anim::@4 -Simple Condition (boolean~) anim::$20 if((byte) sin_idx_y#3<(byte) sinlen_y#0) goto anim::@5 +Simple Condition (boolean~) anim::$8 if((byte) anim::xidx#1<(byte) sinlen_x#0) goto anim::@2 +Simple Condition (boolean~) anim::$12 if((byte) anim::yidx#1<(byte) sinlen_y#0) goto anim::@3 +Simple Condition (boolean~) anim::$14 if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 +Simple Condition (boolean~) anim::$16 if((byte) sin_idx_x#3<(byte) sinlen_x#0) goto anim::@4 +Simple Condition (boolean~) anim::$18 if((byte) sin_idx_y#3<(byte) sinlen_y#0) goto anim::@5 Simple Condition (boolean~) place_sprites::$6 if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 -Simple Condition (boolean~) gen_sprites::$3 if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 -Simple Condition (boolean~) gen_chargen_sprite::$6 if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 -Simple Condition (boolean~) gen_chargen_sprite::$10 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 -Simple Condition (boolean~) gen_chargen_sprite::$11 if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 -Simple Condition (boolean~) gen_chargen_sprite::$13 if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 -Simple Condition (boolean~) gen_chargen_sprite::$15 if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 +Simple Condition (boolean~) gen_sprites::$2 if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 +Simple Condition (boolean~) gen_chargen_sprite::$5 if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 +Simple Condition (boolean~) gen_chargen_sprite::$9 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 +Simple Condition (boolean~) gen_chargen_sprite::$10 if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 +Simple Condition (boolean~) gen_chargen_sprite::$12 if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 +Simple Condition (boolean~) gen_chargen_sprite::$14 if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 Simple Condition (boolean~) gen_sintab::$26 if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @@ -10704,12 +10622,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 (byte) progress_idx#11 ← (byte/signed byte/word/signed word) 0 to:progress_inc::@1 @@ -10735,15 +10651,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::x_msb#2 ← phi( anim/(byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) (word~) anim::$0 ← ((word)) (byte/signed byte/word/signed word) 30 - (byte~) anim::$1 ← (byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (word~) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (word~) anim::$0 + *((byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -10830,7 +10744,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -10854,7 +10768,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) (byte) gen_chargen_sprite::s_gen#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::s_gen_cnt#0 ← (byte/signed byte/word/signed word) 0 (byte) gen_chargen_sprite::x#0 ← (byte/signed byte/word/signed word) 0 @@ -10868,8 +10782,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) (byte) gen_chargen_sprite::c#0 ← (byte/signed byte/word/signed word) 0 - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(byte) gen_chargen_sprite::c#1 ) @@ -10883,8 +10797,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -11282,12 +11196,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -11306,15 +11218,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -11392,7 +11302,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -11415,7 +11325,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#7 ) @@ -11425,8 +11335,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -11438,8 +11348,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -11784,12 +11694,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -11808,15 +11716,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -11891,7 +11797,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -11914,7 +11820,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#7 ) @@ -11924,8 +11830,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -11937,8 +11843,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -12251,12 +12157,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0 + (byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -12275,15 +12179,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -12357,7 +12259,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -12380,7 +12282,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#7 ) @@ -12390,8 +12292,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -12403,8 +12305,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -12535,15 +12437,9 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 Multiple usages for variable. Not optimizing sub-constant (byte) init::i#2 Multiple usages for variable. Not optimizing sub-constant (byte) init::i#2 -Consolidated assigned array index constant in assignment *(COLS#0+40 + init::$1) -Multiple usages for variable. Not optimizing sub-constant (byte) progress_idx#12 -Consolidated referenced array index constant in assignment progress_inc::$2 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 +Consolidated array index constant in assignment *(COLS#0+40 + init::$1) +Consolidated array index constant in *(progress_inc::progress_chars#0+8) Multiple usages for variable. Not optimizing sub-constant (byte) place_sprites::spr_x#2 -Multiple usages for variable. Not optimizing sub-constant (byte) gen_sprites::i#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_sprites::spr#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_chargen_sprite::sprite#4 Succesful SSA optimization Pass2ConstantAdditionElimination @@ -12729,12 +12625,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -12753,15 +12647,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -12835,7 +12727,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -12858,7 +12750,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#7 ) @@ -12868,8 +12760,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -12881,8 +12773,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -13012,13 +12904,7 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 @end: scope:[] from @43 Multiple usages for variable. Not optimizing sub-constant (byte) init::i#2 -Multiple usages for variable. Not optimizing sub-constant (byte) progress_idx#12 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 Multiple usages for variable. Not optimizing sub-constant (byte) place_sprites::spr_x#2 -Multiple usages for variable. Not optimizing sub-constant (byte) gen_sprites::i#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_sprites::spr#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_chargen_sprite::sprite#4 Culled Empty Block (label) @32 @@ -13204,12 +13090,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -13226,15 +13110,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -13308,7 +13190,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -13331,7 +13213,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#7 ) @@ -13341,8 +13223,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -13354,8 +13236,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -13671,12 +13553,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -13693,15 +13573,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -13775,7 +13653,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -13798,7 +13676,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::chargen#7 ) @@ -13808,8 +13686,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -13821,8 +13699,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -14136,12 +14014,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -14158,15 +14034,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -14240,7 +14114,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -14263,7 +14137,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#7 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte*) gen_chargen_sprite::chargen#7 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::chargen#1 ) @@ -14273,8 +14147,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -14286,8 +14160,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -14584,12 +14458,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -14606,15 +14478,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -14688,7 +14558,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -14711,7 +14581,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::chargen#1 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::x#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) @@ -14719,8 +14589,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -14732,8 +14602,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -14858,13 +14728,7 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 to:@end @end: scope:[] from @42 -Multiple usages for variable. Not optimizing sub-constant (byte) progress_idx#12 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 Multiple usages for variable. Not optimizing sub-constant (byte) place_sprites::spr_x#2 -Multiple usages for variable. Not optimizing sub-constant (byte) gen_sprites::i#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_sprites::spr#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_chargen_sprite::sprite#4 Not culling empty block because it shares successor with its predecessor. (label) anim::@9 @@ -15058,12 +14922,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -15080,15 +14942,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -15162,7 +15022,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -15185,7 +15045,7 @@ gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_ (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) (byte*) gen_chargen_sprite::chargen#1 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::chargen#0 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#1 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#1 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::x#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) @@ -15193,8 +15053,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -15206,8 +15066,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -15503,12 +15363,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(const byte) progress_idx#11 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -15525,15 +15383,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(const byte) anim::j2#0 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(const byte) anim::x_msb#0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← (const word) anim::$0 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← (const word) anim::$0 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -15607,7 +15463,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) gen_sprites::spr#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(const byte) gen_sprites::i#0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -15629,7 +15485,7 @@ gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(const byte) gen_chargen_sprite::y#0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::x#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) @@ -15637,8 +15493,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen_cnt#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(const byte) gen_chargen_sprite::s_gen#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(const byte) gen_chargen_sprite::c#0 gen_chargen_sprite::@6/(const byte) gen_chargen_sprite::c#1 ) @@ -15650,8 +15506,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(const byte) gen_chargen_sprite::b#0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -15776,13 +15632,7 @@ gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 to:@end @end: scope:[] from @42 -Multiple usages for variable. Not optimizing sub-constant (byte) progress_idx#12 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 Multiple usages for variable. Not optimizing sub-constant (byte) place_sprites::spr_x#2 -Multiple usages for variable. Not optimizing sub-constant (byte) gen_sprites::i#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_sprites::spr#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_chargen_sprite::sprite#4 Not culling empty block because it shares successor with its predecessor. (label) anim::@9 @@ -15805,13 +15655,7 @@ Not aliassing across scopes: gen_chargen_sprite::sprite#11 gen_chargen_sprite::s Not aliassing across scopes: progress_cursor#34 progress_cursor#22 Not aliassing across scopes: getFAC::return#2 getFAC::return#0 Not aliassing across scopes: gen_sintab::$23 getFAC::return#2 -Multiple usages for variable. Not optimizing sub-constant (byte) progress_idx#12 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::xidx#3 -Multiple usages for variable. Not optimizing sub-constant (byte) anim::yidx#3 Multiple usages for variable. Not optimizing sub-constant (byte) place_sprites::spr_x#2 -Multiple usages for variable. Not optimizing sub-constant (byte) gen_sprites::i#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_sprites::spr#2 Multiple usages for variable. Not optimizing sub-constant (byte*) gen_chargen_sprite::sprite#4 Inlining constant with var siblings (const word) setFAC::w#2 @@ -16145,12 +15989,10 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 to:progress_inc::@1 progress_inc::@return: scope:[progress_inc] from progress_inc::@1 @@ -16167,15 +16009,13 @@ anim::@1: scope:[anim] from anim anim::@3 (byte) anim::j2#3 ← phi( anim/(byte/signed byte/word/signed word) 12 anim::@3/(byte) anim::j2#2 ) (byte) anim::x_msb#2 ← phi( anim/(byte/signed byte/word/signed word) 0 anim::@3/(byte) anim::x_msb#1 ) (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 to:anim::@6 @@ -16249,7 +16089,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -16271,7 +16111,7 @@ gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) @@ -16279,8 +16119,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) @@ -16292,8 +16132,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 to:gen_chargen_sprite::@7 @@ -16454,11 +16294,9 @@ FINAL SYMBOL TABLE (byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem#2 (void()) anim() -(byte~) anim::$1 +(byte~) anim::$2 (byte~) anim::$3 -(byte~) anim::$4 -(byte~) anim::$6 -(byte~) anim::$7 +(byte~) anim::$5 (label) anim::@1 (label) anim::@10 (label) anim::@2 @@ -16508,8 +16346,8 @@ FINAL SYMBOL TABLE (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) (word~) gen_chargen_sprite::$0 (word~) gen_chargen_sprite::$1 -(byte~) gen_chargen_sprite::$4 -(byte~) gen_chargen_sprite::$7 +(byte~) gen_chargen_sprite::$3 +(byte~) gen_chargen_sprite::$6 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@10 (label) gen_chargen_sprite::@2 @@ -16689,8 +16527,6 @@ FINAL SYMBOL TABLE (byte) progress_idx#12 (byte) progress_idx#34 (void()) progress_inc() -(byte~) progress_inc::$2 -(byte~) progress_inc::$3 (label) progress_inc::@1 (label) progress_inc::@2 (label) progress_inc::@return @@ -16798,15 +16634,13 @@ anim::@1: scope:[anim] from anim anim::@11 (byte) anim::j2#3 ← phi( anim/(byte/signed byte/word/signed word) 12 anim::@11/(byte~) anim::j2#8 ) (byte) anim::x_msb#2 ← phi( anim/(byte/signed byte/word/signed word) 0 anim::@11/(byte~) anim::x_msb#8 ) (byte) anim::xidx#3 ← phi( anim/(byte~) anim::xidx#8 anim::@11/(byte~) anim::xidx#9 ) - (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 - (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 - (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 - (byte~) anim::$4 ← > (word) anim::x#0 - (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 - (byte~) anim::$6 ← < (word) anim::x#0 - *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 - (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 - *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 + (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) + (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 + (byte~) anim::$3 ← > (word) anim::x#0 + (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 + (byte~) anim::$5 ← < (word) anim::x#0 + *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 + *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@12 to:anim::@6 @@ -17022,16 +16856,14 @@ progress_inc: scope:[progress_inc] from gen_sintab::@22 if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@3 to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 - *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 + *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 (byte*~) progress_cursor#69 ← (byte*) progress_cursor#10 to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc::@2 progress_inc::@3 (byte*) progress_cursor#11 ← phi( progress_inc::@3/(byte*~) progress_cursor#68 progress_inc::@2/(byte*~) progress_cursor#69 ) (byte) progress_idx#12 ← phi( progress_inc::@3/(byte~) progress_idx#67 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) - (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 - *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 + *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 return @@ -17147,7 +16979,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@4 (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@4/(byte*~) gen_sprites::spr#4 ) (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@4/(byte~) gen_sprites::i#4 ) - (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 + (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 call gen_chargen_sprite param-assignment to:gen_sprites::@3 @@ -17174,7 +17006,7 @@ gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@11 (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*~) gen_chargen_sprite::sprite#13 gen_chargen_sprite::@11/(byte*~) gen_chargen_sprite::sprite#14 ) (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@11/(byte~) gen_chargen_sprite::y#11 ) - (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 + (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) (byte~) gen_chargen_sprite::bits#9 ← (byte) gen_chargen_sprite::bits#0 (byte*~) gen_chargen_sprite::sprite#15 ← (byte*) gen_chargen_sprite::sprite#11 to:gen_chargen_sprite::@2 @@ -17184,8 +17016,8 @@ gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::s_gen_cnt#9 ) (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::s_gen#10 ) (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte~) gen_chargen_sprite::bits#9 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::bits#10 ) - (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 - if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 + (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 + if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 to:gen_chargen_sprite::@6 gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 to:gen_chargen_sprite::@3 @@ -17200,8 +17032,8 @@ gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@13 (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::b#5 ) (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte~) gen_chargen_sprite::s_gen_cnt#10 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::s_gen_cnt#11 ) (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte~) gen_chargen_sprite::s_gen#11 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::s_gen#12 ) - (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 - (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 + (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 + (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@14 to:gen_chargen_sprite::@7 @@ -17329,14 +17161,14 @@ Adding NOP phi() at start of gen_chargen_sprite::@6 CALL GRAPH Calls in [] to main:2 Calls in [main] to init:5 anim:9 -Calls in [init] to clear_screen:64 place_sprites:71 gen_sprites:73 progress_init:75 gen_sintab:77 progress_init:79 gen_sintab:81 clear_screen:83 -Calls in [gen_sintab] to setFAC:96 setARGtoFAC:98 setFAC:102 setMEMtoFAC:104 subFACfromARG:106 setMEMtoFAC:108 setFAC:110 divMEMbyFAC:112 setMEMtoFAC:114 addMEMtoFAC:116 setMEMtoFAC:118 setFAC:123 mulFACbyMEM:125 setMEMtoFAC:127 setFAC:130 divMEMbyFAC:132 sinFAC:134 mulFACbyMEM:136 addMEMtoFAC:138 getFAC:140 progress_inc:145 -Calls in [addMEMtoFAC] to prepareMEM:170 -Calls in [mulFACbyMEM] to prepareMEM:182 -Calls in [divMEMbyFAC] to prepareMEM:190 -Calls in [setFAC] to prepareMEM:196 -Calls in [setMEMtoFAC] to prepareMEM:202 -Calls in [gen_sprites] to gen_chargen_sprite:216 +Calls in [init] to clear_screen:62 place_sprites:69 gen_sprites:71 progress_init:73 gen_sintab:75 progress_init:77 gen_sintab:79 clear_screen:81 +Calls in [gen_sintab] to setFAC:94 setARGtoFAC:96 setFAC:100 setMEMtoFAC:102 subFACfromARG:104 setMEMtoFAC:106 setFAC:108 divMEMbyFAC:110 setMEMtoFAC:112 addMEMtoFAC:114 setMEMtoFAC:116 setFAC:121 mulFACbyMEM:123 setMEMtoFAC:125 setFAC:128 divMEMbyFAC:130 sinFAC:132 mulFACbyMEM:134 addMEMtoFAC:136 getFAC:138 progress_inc:143 +Calls in [addMEMtoFAC] to prepareMEM:166 +Calls in [mulFACbyMEM] to prepareMEM:178 +Calls in [divMEMbyFAC] to prepareMEM:186 +Calls in [setFAC] to prepareMEM:192 +Calls in [setMEMtoFAC] to prepareMEM:198 +Calls in [gen_sprites] to gen_chargen_sprite:212 Propagating live ranges... Propagating live ranges... @@ -17436,527 +17268,523 @@ anim::@1: scope:[anim] from anim anim::@11 [19] (byte) anim::j2#3 ← phi( anim/(byte/signed byte/word/signed word) 12 anim::@11/(byte~) anim::j2#8 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] [19] (byte) anim::x_msb#2 ← phi( anim/(byte/signed byte/word/signed word) 0 anim::@11/(byte~) anim::x_msb#8 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] [19] (byte) anim::xidx#3 ← phi( anim/(byte~) anim::xidx#8 anim::@11/(byte~) anim::xidx#9 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] - [20] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] - [21] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] - [22] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] - [23] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] - [24] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::x_msb#1 ] - [25] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] - [26] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] - [27] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] - [28] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] - [29] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] - [30] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@12 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] + [20] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] + [21] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] + [22] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] + [23] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::x_msb#1 ] + [24] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] + [25] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] + [26] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] + [27] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] + [28] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@12 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] to:anim::@6 anim::@6: scope:[anim] from anim::@1 - [31] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] - [32] (byte~) anim::xidx#11 ← (byte) anim::xidx#2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#11 ] + [29] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] + [30] (byte~) anim::xidx#11 ← (byte) anim::xidx#2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#11 ] to:anim::@2 anim::@2: scope:[anim] from anim::@12 anim::@6 - [33] (byte) anim::xidx#5 ← phi( anim::@12/(byte~) anim::xidx#10 anim::@6/(byte~) anim::xidx#11 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#5 ] - [34] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#1 ] - [35] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@13 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#1 ] + [31] (byte) anim::xidx#5 ← phi( anim::@12/(byte~) anim::xidx#10 anim::@6/(byte~) anim::xidx#11 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#5 ] + [32] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#1 ] + [33] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@13 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#1 ] to:anim::@7 anim::@7: scope:[anim] from anim::@2 - [36] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#2 ] - [37] (byte~) anim::yidx#11 ← (byte) anim::yidx#2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#11 ] + [34] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#2 ] + [35] (byte~) anim::yidx#11 ← (byte) anim::yidx#2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#11 ] to:anim::@3 anim::@3: scope:[anim] from anim::@13 anim::@7 - [38] (byte) anim::yidx#6 ← phi( anim::@13/(byte~) anim::yidx#10 anim::@7/(byte~) anim::yidx#11 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#6 ] - [39] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#1 ] - [40] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#2 ] - [41] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#2 anim::j#1 ] - [42] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@11 [ sin_idx_x#13 sin_idx_y#13 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#2 anim::j#1 ] + [36] (byte) anim::yidx#6 ← phi( anim::@13/(byte~) anim::yidx#10 anim::@7/(byte~) anim::yidx#11 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#6 ] + [37] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#1 ] + [38] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#2 ] + [39] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#2 anim::j#1 ] + [40] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@11 [ sin_idx_x#13 sin_idx_y#13 anim::x_msb#1 anim::xidx#5 anim::yidx#6 anim::j2#2 anim::j#1 ] to:anim::@8 anim::@8: scope:[anim] from anim::@3 - [43] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] - [44] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] - [45] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] + [41] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] + [42] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] + [43] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] to:anim::@9 anim::@9: scope:[anim] from anim::@8 - [46] phi() [ sin_idx_y#13 ] + [44] phi() [ sin_idx_y#13 ] to:anim::@4 anim::@4: scope:[anim] from anim::@14 anim::@9 - [47] (byte) sin_idx_x#11 ← phi( anim::@14/(byte~) sin_idx_x#28 anim::@9/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] - [48] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] - [49] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] + [45] (byte) sin_idx_x#11 ← phi( anim::@14/(byte~) sin_idx_x#28 anim::@9/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] + [46] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] + [47] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] to:anim::@10 anim::@10: scope:[anim] from anim::@4 - [50] phi() [ sin_idx_x#11 ] + [48] phi() [ sin_idx_x#11 ] to:anim::@5 anim::@5: scope:[anim] from anim::@10 anim::@15 - [51] (byte) sin_idx_y#11 ← phi( anim::@10/(byte/signed byte/word/signed word) 0 anim::@15/(byte~) sin_idx_y#28 ) [ sin_idx_x#11 sin_idx_y#11 ] - [52] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] + [49] (byte) sin_idx_y#11 ← phi( anim::@10/(byte/signed byte/word/signed word) 0 anim::@15/(byte~) sin_idx_y#28 ) [ sin_idx_x#11 sin_idx_y#11 ] + [50] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] to:anim::@return anim::@return: scope:[anim] from anim::@5 - [53] return [ sin_idx_x#11 sin_idx_y#11 ] + [51] return [ sin_idx_x#11 sin_idx_y#11 ] to:@return anim::@15: scope:[anim] from anim::@4 - [54] (byte~) sin_idx_y#28 ← (byte) sin_idx_y#3 [ sin_idx_x#11 sin_idx_y#28 ] + [52] (byte~) sin_idx_y#28 ← (byte) sin_idx_y#3 [ sin_idx_x#11 sin_idx_y#28 ] to:anim::@5 anim::@14: scope:[anim] from anim::@8 - [55] (byte~) sin_idx_x#28 ← (byte) sin_idx_x#3 [ sin_idx_y#13 sin_idx_x#28 ] + [53] (byte~) sin_idx_x#28 ← (byte) sin_idx_x#3 [ sin_idx_y#13 sin_idx_x#28 ] to:anim::@4 anim::@11: scope:[anim] from anim::@3 - [56] (byte~) anim::xidx#9 ← (byte) anim::xidx#5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#1 anim::yidx#6 anim::j2#2 anim::j#1 ] - [57] (byte~) anim::x_msb#8 ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::yidx#6 anim::j2#2 anim::j#1 ] - [58] (byte~) anim::j2#8 ← (byte) anim::j2#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::j2#8 anim::yidx#6 anim::j#1 ] - [59] (byte~) anim::yidx#9 ← (byte) anim::yidx#6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::j2#8 anim::yidx#9 anim::j#1 ] - [60] (byte~) anim::j#7 ← (byte) anim::j#1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::j2#8 anim::yidx#9 anim::j#7 ] + [54] (byte~) anim::xidx#9 ← (byte) anim::xidx#5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#1 anim::yidx#6 anim::j2#2 anim::j#1 ] + [55] (byte~) anim::x_msb#8 ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::yidx#6 anim::j2#2 anim::j#1 ] + [56] (byte~) anim::j2#8 ← (byte) anim::j2#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::j2#8 anim::yidx#6 anim::j#1 ] + [57] (byte~) anim::yidx#9 ← (byte) anim::yidx#6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::j2#8 anim::yidx#9 anim::j#1 ] + [58] (byte~) anim::j#7 ← (byte) anim::j#1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#9 anim::x_msb#8 anim::j2#8 anim::yidx#9 anim::j#7 ] to:anim::@1 anim::@13: scope:[anim] from anim::@2 - [61] (byte~) anim::yidx#10 ← (byte) anim::yidx#1 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#10 ] + [59] (byte~) anim::yidx#10 ← (byte) anim::yidx#1 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::x_msb#1 anim::xidx#5 anim::yidx#10 ] to:anim::@3 anim::@12: scope:[anim] from anim::@1 - [62] (byte~) anim::xidx#10 ← (byte) anim::xidx#1 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#10 ] + [60] (byte~) anim::xidx#10 ← (byte) anim::xidx#1 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#10 ] to:anim::@2 init: scope:[init] from main - [63] phi() [ ] - [64] call clear_screen param-assignment [ ] + [61] phi() [ ] + [62] call clear_screen param-assignment [ ] to:init::@1 init::@1: scope:[init] from init init::@11 - [65] (byte) init::i#2 ← phi( init::@11/(byte~) init::i#3 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] - [66] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] - [67] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] - [68] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] - [69] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@11 [ init::i#1 ] + [63] (byte) init::i#2 ← phi( init::@11/(byte~) init::i#3 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] + [64] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] + [65] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] + [66] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] + [67] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@11 [ init::i#1 ] to:init::@2 init::@2: scope:[init] from init::@1 - [70] phi() [ ] - [71] call place_sprites param-assignment [ ] + [68] phi() [ ] + [69] call place_sprites param-assignment [ ] to:init::@4 init::@4: scope:[init] from init::@2 - [72] phi() [ ] - [73] call gen_sprites param-assignment [ ] + [70] phi() [ ] + [71] call gen_sprites param-assignment [ ] to:init::@5 init::@5: scope:[init] from init::@4 - [74] phi() [ ] - [75] call progress_init param-assignment [ progress_cursor#22 ] + [72] phi() [ ] + [73] call progress_init param-assignment [ progress_cursor#22 ] to:init::@6 init::@6: scope:[init] from init::@5 - [76] phi() [ progress_cursor#22 ] - [77] call gen_sintab param-assignment [ ] + [74] phi() [ progress_cursor#22 ] + [75] call gen_sintab param-assignment [ ] to:init::@7 init::@7: scope:[init] from init::@6 - [78] phi() [ ] - [79] call progress_init param-assignment [ progress_cursor#22 ] + [76] phi() [ ] + [77] call progress_init param-assignment [ progress_cursor#22 ] to:init::@8 init::@8: scope:[init] from init::@7 - [80] phi() [ progress_cursor#22 ] - [81] call gen_sintab param-assignment [ ] + [78] phi() [ progress_cursor#22 ] + [79] call gen_sintab param-assignment [ ] to:init::@9 init::@9: scope:[init] from init::@8 - [82] phi() [ ] - [83] call clear_screen param-assignment [ ] + [80] phi() [ ] + [81] call clear_screen param-assignment [ ] to:init::@return init::@return: scope:[init] from init::@9 - [84] return [ ] + [82] return [ ] to:@return init::@11: scope:[init] from init::@1 - [85] (byte~) init::i#3 ← (byte) init::i#1 [ init::i#3 ] + [83] (byte~) init::i#3 ← (byte) init::i#1 [ init::i#3 ] to:init::@1 clear_screen: scope:[clear_screen] from init init::@9 - [86] phi() [ ] + [84] phi() [ ] to:clear_screen::@1 clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@3 - [87] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@3/(byte*~) clear_screen::sc#3 ) [ clear_screen::sc#2 ] - [88] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] - [89] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] - [90] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@3 [ clear_screen::sc#1 ] + [85] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@3/(byte*~) clear_screen::sc#3 ) [ clear_screen::sc#2 ] + [86] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] + [87] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] + [88] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@3 [ clear_screen::sc#1 ] to:clear_screen::@return clear_screen::@return: scope:[clear_screen] from clear_screen::@1 - [91] return [ ] + [89] return [ ] to:@return clear_screen::@3: scope:[clear_screen] from clear_screen::@1 - [92] (byte*~) clear_screen::sc#3 ← (byte*) clear_screen::sc#1 [ clear_screen::sc#3 ] + [90] (byte*~) clear_screen::sc#3 ← (byte*) clear_screen::sc#1 [ clear_screen::sc#3 ] to:clear_screen::@1 gen_sintab: scope:[gen_sintab] from init::@6 init::@8 - [93] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [93] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [93] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [93] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [94] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_cursor#22 ] - [95] (word~) setFAC::w#6 ← (word) setFAC::w#0 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#6 progress_cursor#22 ] - [96] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [91] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [91] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [91] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [91] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [92] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_cursor#22 ] + [93] (word~) setFAC::w#6 ← (word) setFAC::w#0 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#6 progress_cursor#22 ] + [94] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@3 gen_sintab::@3: scope:[gen_sintab] from gen_sintab - [97] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [98] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [95] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [96] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@4 gen_sintab::@4: scope:[gen_sintab] from gen_sintab::@3 asm { lda#0ldx#0ldy#0 } - [100] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_cursor#22 ] - [101] (word~) setFAC::w#9 ← (word) setFAC::w#1 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#9 progress_cursor#22 ] - [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [98] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_cursor#22 ] + [99] (word~) setFAC::w#9 ← (word) setFAC::w#1 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#9 progress_cursor#22 ] + [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@5 gen_sintab::@5: scope:[gen_sintab] from gen_sintab::@4 - [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [101] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [102] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@6 gen_sintab::@6: scope:[gen_sintab] from gen_sintab::@5 - [105] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [106] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [104] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@7 gen_sintab::@7: scope:[gen_sintab] from gen_sintab::@6 - [107] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [108] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [105] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@8 gen_sintab::@8: scope:[gen_sintab] from gen_sintab::@7 - [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [110] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [107] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@9 gen_sintab::@9: scope:[gen_sintab] from gen_sintab::@8 - [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [112] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@10 gen_sintab::@10: scope:[gen_sintab] from gen_sintab::@9 - [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [114] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [112] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@11 gen_sintab::@11: scope:[gen_sintab] from gen_sintab::@10 - [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] to:gen_sintab::@12 gen_sintab::@12: scope:[gen_sintab] from gen_sintab::@11 - [117] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [118] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] - [119] (byte*~) progress_cursor#66 ← (byte*) progress_cursor#22 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#66 ] + [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [116] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#22 ] + [117] (byte*~) progress_cursor#66 ← (byte*) progress_cursor#22 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_cursor#66 ] to:gen_sintab::@1 gen_sintab::@1: scope:[gen_sintab] from gen_sintab::@12 gen_sintab::@24 - [120] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*~) progress_cursor#66 gen_sintab::@24/(byte*~) progress_cursor#67 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [120] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@24/(byte~) progress_idx#66 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [120] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@24/(byte~) gen_sintab::i#13 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [121] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] - [122] (word~) setFAC::w#7 ← (word) setFAC::w#3 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#7 ] - [123] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [118] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*~) progress_cursor#66 gen_sintab::@24/(byte*~) progress_cursor#67 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [118] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@24/(byte~) progress_idx#66 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [118] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@24/(byte~) gen_sintab::i#13 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [119] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] + [120] (word~) setFAC::w#7 ← (word) setFAC::w#3 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#7 ] + [121] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@14 gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@1 - [124] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [125] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [122] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [123] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@15 gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14 - [126] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [127] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [124] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [125] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@16 gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15 - [128] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] - [129] (word~) setFAC::w#8 ← (word) setFAC::w#4 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#8 ] - [130] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [126] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] + [127] (word~) setFAC::w#8 ← (word) setFAC::w#4 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#8 ] + [128] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@17 gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16 - [131] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [132] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [129] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [130] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@18 gen_sintab::@18: scope:[gen_sintab] from gen_sintab::@17 - [133] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [134] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [131] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [132] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@19 gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18 - [135] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [136] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [133] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [134] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@20 gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19 - [137] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [138] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [135] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [136] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@21 gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20 - [139] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [140] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] - [141] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] + [137] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [138] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] + [139] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] to:gen_sintab::@22 gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21 - [142] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] - [143] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] - [144] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [145] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] + [140] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] + [141] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] + [142] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [143] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] to:gen_sintab::@23 gen_sintab::@23: scope:[gen_sintab] from gen_sintab::@22 - [146] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] - [147] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] + [144] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] + [145] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] to:gen_sintab::@return gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 - [148] return [ ] + [146] return [ ] to:@return gen_sintab::@24: scope:[gen_sintab] from gen_sintab::@23 - [149] (byte~) gen_sintab::i#13 ← (byte) gen_sintab::i#1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#13 progress_idx#12 progress_cursor#11 ] - [150] (byte~) progress_idx#66 ← (byte) progress_idx#12 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#13 progress_idx#66 progress_cursor#11 ] - [151] (byte*~) progress_cursor#67 ← (byte*) progress_cursor#11 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#13 progress_idx#66 progress_cursor#67 ] + [147] (byte~) gen_sintab::i#13 ← (byte) gen_sintab::i#1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#13 progress_idx#12 progress_cursor#11 ] + [148] (byte~) progress_idx#66 ← (byte) progress_idx#12 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#13 progress_idx#66 progress_cursor#11 ] + [149] (byte*~) progress_cursor#67 ← (byte*) progress_cursor#11 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#13 progress_idx#66 progress_cursor#67 ] to:gen_sintab::@1 progress_inc: scope:[progress_inc] from gen_sintab::@22 - [152] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] - [153] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@3 [ progress_cursor#34 progress_idx#10 ] + [150] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] + [151] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@3 [ progress_cursor#34 progress_idx#10 ] to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - [154] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] - [155] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] - [156] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] - [157] (byte*~) progress_cursor#69 ← (byte*) progress_cursor#10 [ progress_cursor#69 ] + [152] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] + [153] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] + [154] (byte*~) progress_cursor#69 ← (byte*) progress_cursor#10 [ progress_cursor#69 ] to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc::@2 progress_inc::@3 - [158] (byte*) progress_cursor#11 ← phi( progress_inc::@3/(byte*~) progress_cursor#68 progress_inc::@2/(byte*~) progress_cursor#69 ) [ progress_idx#12 progress_cursor#11 ] - [158] (byte) progress_idx#12 ← phi( progress_inc::@3/(byte~) progress_idx#67 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] - [159] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] - [160] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] + [155] (byte*) progress_cursor#11 ← phi( progress_inc::@3/(byte*~) progress_cursor#68 progress_inc::@2/(byte*~) progress_cursor#69 ) [ progress_idx#12 progress_cursor#11 ] + [155] (byte) progress_idx#12 ← phi( progress_inc::@3/(byte~) progress_idx#67 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] + [156] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 - [161] return [ progress_idx#12 progress_cursor#11 ] + [157] return [ progress_idx#12 progress_cursor#11 ] to:@return progress_inc::@3: scope:[progress_inc] from progress_inc - [162] (byte~) progress_idx#67 ← (byte) progress_idx#10 [ progress_cursor#34 progress_idx#67 ] - [163] (byte*~) progress_cursor#68 ← (byte*) progress_cursor#34 [ progress_idx#67 progress_cursor#68 ] + [158] (byte~) progress_idx#67 ← (byte) progress_idx#10 [ progress_cursor#34 progress_idx#67 ] + [159] (byte*~) progress_cursor#68 ← (byte*) progress_cursor#34 [ progress_idx#67 progress_cursor#68 ] to:progress_inc::@1 getFAC: scope:[getFAC] from gen_sintab::@21 asm { jsr$b1aasty$festa$ff } - [165] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] + [161] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] to:getFAC::@return getFAC::@return: scope:[getFAC] from getFAC - [166] return [ getFAC::return#0 ] + [162] return [ getFAC::return#0 ] to:@return addMEMtoFAC: scope:[addMEMtoFAC] from gen_sintab::@11 gen_sintab::@20 - [167] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] - [168] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] - [169] (byte*~) prepareMEM::mem#6 ← (byte*) prepareMEM::mem#2 [ prepareMEM::mem#6 ] - [170] call prepareMEM param-assignment [ ] + [163] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] + [164] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] + [165] (byte*~) prepareMEM::mem#6 ← (byte*) prepareMEM::mem#2 [ prepareMEM::mem#6 ] + [166] call prepareMEM param-assignment [ ] to:addMEMtoFAC::@1 addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC asm { lda$feldy$ffjsr$b867 } to:addMEMtoFAC::@return addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1 - [172] return [ ] + [168] return [ ] to:@return prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC - [173] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*~) prepareMEM::mem#6 divMEMbyFAC/(byte*~) prepareMEM::mem#7 mulFACbyMEM/(byte*~) prepareMEM::mem#8 setFAC/(byte*~) prepareMEM::mem#9 setMEMtoFAC/(byte*~) prepareMEM::mem#10 ) [ prepareMEM::mem#5 ] - [174] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] - [175] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] - [176] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] - [177] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] + [169] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*~) prepareMEM::mem#6 divMEMbyFAC/(byte*~) prepareMEM::mem#7 mulFACbyMEM/(byte*~) prepareMEM::mem#8 setFAC/(byte*~) prepareMEM::mem#9 setMEMtoFAC/(byte*~) prepareMEM::mem#10 ) [ prepareMEM::mem#5 ] + [170] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] + [171] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] + [172] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] + [173] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] to:prepareMEM::@return prepareMEM::@return: scope:[prepareMEM] from prepareMEM - [178] return [ ] + [174] return [ ] to:@return mulFACbyMEM: scope:[mulFACbyMEM] from gen_sintab::@14 gen_sintab::@19 - [179] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] - [180] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] - [181] (byte*~) prepareMEM::mem#8 ← (byte*) prepareMEM::mem#4 [ prepareMEM::mem#8 ] - [182] call prepareMEM param-assignment [ ] + [175] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] + [176] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] + [177] (byte*~) prepareMEM::mem#8 ← (byte*) prepareMEM::mem#4 [ prepareMEM::mem#8 ] + [178] call prepareMEM param-assignment [ ] to:mulFACbyMEM::@1 mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM asm { lda$feldy$ffjsr$ba28 } to:mulFACbyMEM::@return mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1 - [184] return [ ] + [180] return [ ] to:@return sinFAC: scope:[sinFAC] from gen_sintab::@18 asm { jsr$e26b } to:sinFAC::@return sinFAC::@return: scope:[sinFAC] from sinFAC - [186] return [ ] + [182] return [ ] to:@return divMEMbyFAC: scope:[divMEMbyFAC] from gen_sintab::@17 gen_sintab::@9 - [187] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] - [188] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] - [189] (byte*~) prepareMEM::mem#7 ← (byte*) prepareMEM::mem#3 [ prepareMEM::mem#7 ] - [190] call prepareMEM param-assignment [ ] + [183] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] + [184] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] + [185] (byte*~) prepareMEM::mem#7 ← (byte*) prepareMEM::mem#3 [ prepareMEM::mem#7 ] + [186] call prepareMEM param-assignment [ ] to:divMEMbyFAC::@1 divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC asm { lda$feldy$ffjsr$bb0f } to:divMEMbyFAC::@return divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1 - [192] return [ ] + [188] return [ ] to:@return setFAC: scope:[setFAC] from gen_sintab gen_sintab::@1 gen_sintab::@16 gen_sintab::@4 gen_sintab::@8 - [193] (word) setFAC::w#5 ← phi( gen_sintab/(word~) setFAC::w#6 gen_sintab::@1/(word~) setFAC::w#7 gen_sintab::@16/(word~) setFAC::w#8 gen_sintab::@4/(word~) setFAC::w#9 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] - [194] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] - [195] (byte*~) prepareMEM::mem#9 ← (byte*) prepareMEM::mem#0 [ prepareMEM::mem#9 ] - [196] call prepareMEM param-assignment [ ] + [189] (word) setFAC::w#5 ← phi( gen_sintab/(word~) setFAC::w#6 gen_sintab::@1/(word~) setFAC::w#7 gen_sintab::@16/(word~) setFAC::w#8 gen_sintab::@4/(word~) setFAC::w#9 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] + [190] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] + [191] (byte*~) prepareMEM::mem#9 ← (byte*) prepareMEM::mem#0 [ prepareMEM::mem#9 ] + [192] call prepareMEM param-assignment [ ] to:setFAC::@1 setFAC::@1: scope:[setFAC] from setFAC asm { ldy$felda$ffjsr$b391 } to:setFAC::@return setFAC::@return: scope:[setFAC] from setFAC::@1 - [198] return [ ] + [194] return [ ] to:@return setMEMtoFAC: scope:[setMEMtoFAC] from gen_sintab::@10 gen_sintab::@12 gen_sintab::@15 gen_sintab::@5 gen_sintab::@7 - [199] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] - [200] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] - [201] (byte*~) prepareMEM::mem#10 ← (byte*) prepareMEM::mem#1 [ prepareMEM::mem#10 ] - [202] call prepareMEM param-assignment [ ] + [195] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] + [196] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] + [197] (byte*~) prepareMEM::mem#10 ← (byte*) prepareMEM::mem#1 [ prepareMEM::mem#10 ] + [198] call prepareMEM param-assignment [ ] to:setMEMtoFAC::@1 setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC asm { ldx$feldy$ffjsr$bbd4 } to:setMEMtoFAC::@return setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1 - [204] return [ ] + [200] return [ ] to:@return subFACfromARG: scope:[subFACfromARG] from gen_sintab::@6 asm { jsr$b853 } to:subFACfromARG::@return subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG - [206] return [ ] + [202] return [ ] to:@return setARGtoFAC: scope:[setARGtoFAC] from gen_sintab::@3 asm { jsr$bc0f } to:setARGtoFAC::@return setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC - [208] return [ ] + [204] return [ ] to:@return progress_init: scope:[progress_init] from init::@5 init::@7 - [209] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] - [210] (byte*) progress_cursor#22 ← (byte*) progress_init::line#2 [ progress_cursor#22 ] + [205] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] + [206] (byte*) progress_cursor#22 ← (byte*) progress_init::line#2 [ progress_cursor#22 ] to:progress_init::@return progress_init::@return: scope:[progress_init] from progress_init - [211] return [ progress_cursor#22 ] + [207] return [ progress_cursor#22 ] to:@return gen_sprites: scope:[gen_sprites] from init::@4 - [212] phi() [ ] + [208] phi() [ ] to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@4 - [213] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@4/(byte*~) gen_sprites::spr#4 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] - [213] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@4/(byte~) gen_sprites::i#4 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] - [214] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] - [215] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] - [216] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] + [209] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@4/(byte*~) gen_sprites::spr#4 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] + [209] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@4/(byte~) gen_sprites::i#4 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] + [210] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] + [211] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] + [212] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 - [217] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] - [218] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::spr#1 gen_sprites::i#1 ] - [219] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@4 [ gen_sprites::spr#1 gen_sprites::i#1 ] + [213] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] + [214] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::spr#1 gen_sprites::i#1 ] + [215] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@4 [ gen_sprites::spr#1 gen_sprites::i#1 ] to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 - [220] return [ ] + [216] return [ ] to:@return gen_sprites::@4: scope:[gen_sprites] from gen_sprites::@3 - [221] (byte~) gen_sprites::i#4 ← (byte) gen_sprites::i#1 [ gen_sprites::i#4 gen_sprites::spr#1 ] - [222] (byte*~) gen_sprites::spr#4 ← (byte*) gen_sprites::spr#1 [ gen_sprites::i#4 gen_sprites::spr#4 ] + [217] (byte~) gen_sprites::i#4 ← (byte) gen_sprites::i#1 [ gen_sprites::i#4 gen_sprites::spr#1 ] + [218] (byte*~) gen_sprites::spr#4 ← (byte*) gen_sprites::spr#1 [ gen_sprites::i#4 gen_sprites::spr#4 ] to:gen_sprites::@1 gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 - [223] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] - [224] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] - [225] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] + [219] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] + [220] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] + [221] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] asm { sei } - [227] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] - [228] (byte*~) gen_chargen_sprite::sprite#13 ← (byte*) gen_chargen_sprite::sprite#0 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::sprite#13 ] + [223] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] + [224] (byte*~) gen_chargen_sprite::sprite#13 ← (byte*) gen_chargen_sprite::sprite#0 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::sprite#13 ] to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@11 - [229] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*~) gen_chargen_sprite::sprite#13 gen_chargen_sprite::@11/(byte*~) gen_chargen_sprite::sprite#14 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] - [229] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@11/(byte~) gen_chargen_sprite::y#11 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] - [230] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] - [231] (byte~) gen_chargen_sprite::bits#9 ← (byte) gen_chargen_sprite::bits#0 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#9 ] - [232] (byte*~) gen_chargen_sprite::sprite#15 ← (byte*) gen_chargen_sprite::sprite#11 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#9 gen_chargen_sprite::sprite#15 ] + [225] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*~) gen_chargen_sprite::sprite#13 gen_chargen_sprite::@11/(byte*~) gen_chargen_sprite::sprite#14 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] + [225] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@11/(byte~) gen_chargen_sprite::y#11 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] + [226] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] + [227] (byte~) gen_chargen_sprite::bits#9 ← (byte) gen_chargen_sprite::bits#0 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#9 ] + [228] (byte*~) gen_chargen_sprite::sprite#15 ← (byte*) gen_chargen_sprite::sprite#11 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#9 gen_chargen_sprite::sprite#15 ] to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@12 - [233] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::x#9 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [233] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*~) gen_chargen_sprite::sprite#15 gen_chargen_sprite::@12/(byte*~) gen_chargen_sprite::sprite#16 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [233] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::s_gen_cnt#9 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [233] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::s_gen#10 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [233] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte~) gen_chargen_sprite::bits#9 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::bits#10 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [234] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] - [235] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [229] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::x#9 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [229] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*~) gen_chargen_sprite::sprite#15 gen_chargen_sprite::@12/(byte*~) gen_chargen_sprite::sprite#16 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [229] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::s_gen_cnt#9 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [229] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::s_gen#10 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [229] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte~) gen_chargen_sprite::bits#9 gen_chargen_sprite::@12/(byte~) gen_chargen_sprite::bits#10 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [230] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] + [231] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] to:gen_chargen_sprite::@6 gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 - [236] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [232] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] to:gen_chargen_sprite::@3 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 - [237] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] - [238] (byte~) gen_chargen_sprite::s_gen#11 ← (byte) gen_chargen_sprite::s_gen#5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#11 ] - [239] (byte~) gen_chargen_sprite::s_gen_cnt#10 ← (byte) gen_chargen_sprite::s_gen_cnt#4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#11 gen_chargen_sprite::s_gen_cnt#10 ] - [240] (byte*~) gen_chargen_sprite::sprite#17 ← (byte*) gen_chargen_sprite::sprite#10 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#11 gen_chargen_sprite::s_gen_cnt#10 gen_chargen_sprite::sprite#17 ] + [233] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] + [234] (byte~) gen_chargen_sprite::s_gen#11 ← (byte) gen_chargen_sprite::s_gen#5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#11 ] + [235] (byte~) gen_chargen_sprite::s_gen_cnt#10 ← (byte) gen_chargen_sprite::s_gen_cnt#4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#11 gen_chargen_sprite::s_gen_cnt#10 ] + [236] (byte*~) gen_chargen_sprite::sprite#17 ← (byte*) gen_chargen_sprite::sprite#10 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#11 gen_chargen_sprite::s_gen_cnt#10 gen_chargen_sprite::sprite#17 ] to:gen_chargen_sprite::@4 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@13 gen_chargen_sprite::@3 - [241] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*~) gen_chargen_sprite::sprite#17 gen_chargen_sprite::@13/(byte*~) gen_chargen_sprite::sprite#18 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [241] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::b#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [241] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte~) gen_chargen_sprite::s_gen_cnt#10 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::s_gen_cnt#11 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [241] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte~) gen_chargen_sprite::s_gen#11 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::s_gen#12 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [242] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] - [243] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] - [244] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] - [245] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@14 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] + [237] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*~) gen_chargen_sprite::sprite#17 gen_chargen_sprite::@13/(byte*~) gen_chargen_sprite::sprite#18 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [237] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::b#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [237] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte~) gen_chargen_sprite::s_gen_cnt#10 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::s_gen_cnt#11 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [237] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte~) gen_chargen_sprite::s_gen#11 gen_chargen_sprite::@13/(byte~) gen_chargen_sprite::s_gen#12 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [238] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] + [239] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] + [240] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] + [241] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@14 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] to:gen_chargen_sprite::@7 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 - [246] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] - [247] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] - [248] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [249] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] - [250] (byte*~) gen_chargen_sprite::sprite#20 ← (byte*) gen_chargen_sprite::sprite#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#20 ] + [242] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] + [243] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] + [244] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [245] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] + [246] (byte*~) gen_chargen_sprite::sprite#20 ← (byte*) gen_chargen_sprite::sprite#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#20 ] to:gen_chargen_sprite::@5 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@14 gen_chargen_sprite::@7 - [251] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@14/(byte*~) gen_chargen_sprite::sprite#19 gen_chargen_sprite::@7/(byte*~) gen_chargen_sprite::sprite#20 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] - [251] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@14/(byte~) gen_chargen_sprite::s_gen_cnt#12 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] - [251] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@14/(byte~) gen_chargen_sprite::s_gen#13 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] - [252] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] - [253] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@13 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] + [247] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@14/(byte*~) gen_chargen_sprite::sprite#19 gen_chargen_sprite::@7/(byte*~) gen_chargen_sprite::sprite#20 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] + [247] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@14/(byte~) gen_chargen_sprite::s_gen_cnt#12 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] + [247] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@14/(byte~) gen_chargen_sprite::s_gen#13 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] + [248] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] + [249] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@13 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] to:gen_chargen_sprite::@8 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - [254] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::bits#1 ] - [255] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::bits#1 gen_chargen_sprite::x#1 ] - [256] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@12 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::bits#1 gen_chargen_sprite::x#1 ] + [250] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::bits#1 ] + [251] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::bits#1 gen_chargen_sprite::x#1 ] + [252] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@12 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::bits#1 gen_chargen_sprite::x#1 ] to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - [257] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] - [258] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::y#1 ] - [259] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@11 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::y#1 ] + [253] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] + [254] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::y#1 ] + [255] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@11 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::y#1 ] to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 - [260] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] + [256] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] asm { cli } to:gen_chargen_sprite::@return gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 - [262] return [ ] + [258] return [ ] to:@return gen_chargen_sprite::@11: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 - [263] (byte~) gen_chargen_sprite::y#11 ← (byte) gen_chargen_sprite::y#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#11 gen_chargen_sprite::sprite#2 ] - [264] (byte*~) gen_chargen_sprite::sprite#14 ← (byte*) gen_chargen_sprite::sprite#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#11 gen_chargen_sprite::sprite#14 ] + [259] (byte~) gen_chargen_sprite::y#11 ← (byte) gen_chargen_sprite::y#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#11 gen_chargen_sprite::sprite#2 ] + [260] (byte*~) gen_chargen_sprite::sprite#14 ← (byte*) gen_chargen_sprite::sprite#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#11 gen_chargen_sprite::sprite#14 ] to:gen_chargen_sprite::@1 gen_chargen_sprite::@12: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - [265] (byte~) gen_chargen_sprite::bits#10 ← (byte) gen_chargen_sprite::bits#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] - [266] (byte~) gen_chargen_sprite::s_gen#10 ← (byte) gen_chargen_sprite::s_gen#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] - [267] (byte~) gen_chargen_sprite::s_gen_cnt#9 ← (byte) gen_chargen_sprite::s_gen_cnt#5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#9 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] - [268] (byte*~) gen_chargen_sprite::sprite#16 ← (byte*) gen_chargen_sprite::sprite#4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#9 gen_chargen_sprite::sprite#16 gen_chargen_sprite::x#1 ] - [269] (byte~) gen_chargen_sprite::x#9 ← (byte) gen_chargen_sprite::x#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#9 gen_chargen_sprite::sprite#16 gen_chargen_sprite::x#9 ] + [261] (byte~) gen_chargen_sprite::bits#10 ← (byte) gen_chargen_sprite::bits#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] + [262] (byte~) gen_chargen_sprite::s_gen#10 ← (byte) gen_chargen_sprite::s_gen#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] + [263] (byte~) gen_chargen_sprite::s_gen_cnt#9 ← (byte) gen_chargen_sprite::s_gen_cnt#5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#9 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] + [264] (byte*~) gen_chargen_sprite::sprite#16 ← (byte*) gen_chargen_sprite::sprite#4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#9 gen_chargen_sprite::sprite#16 gen_chargen_sprite::x#1 ] + [265] (byte~) gen_chargen_sprite::x#9 ← (byte) gen_chargen_sprite::x#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#10 gen_chargen_sprite::s_gen#10 gen_chargen_sprite::s_gen_cnt#9 gen_chargen_sprite::sprite#16 gen_chargen_sprite::x#9 ] to:gen_chargen_sprite::@2 gen_chargen_sprite::@13: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - [270] (byte~) gen_chargen_sprite::s_gen#12 ← (byte) gen_chargen_sprite::s_gen#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] - [271] (byte~) gen_chargen_sprite::s_gen_cnt#11 ← (byte) gen_chargen_sprite::s_gen_cnt#5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#11 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] - [272] (byte~) gen_chargen_sprite::b#5 ← (byte) gen_chargen_sprite::b#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#11 gen_chargen_sprite::b#5 gen_chargen_sprite::sprite#4 ] - [273] (byte*~) gen_chargen_sprite::sprite#18 ← (byte*) gen_chargen_sprite::sprite#4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#11 gen_chargen_sprite::b#5 gen_chargen_sprite::sprite#18 ] + [266] (byte~) gen_chargen_sprite::s_gen#12 ← (byte) gen_chargen_sprite::s_gen#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] + [267] (byte~) gen_chargen_sprite::s_gen_cnt#11 ← (byte) gen_chargen_sprite::s_gen_cnt#5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#11 gen_chargen_sprite::sprite#4 gen_chargen_sprite::b#1 ] + [268] (byte~) gen_chargen_sprite::b#5 ← (byte) gen_chargen_sprite::b#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#11 gen_chargen_sprite::b#5 gen_chargen_sprite::sprite#4 ] + [269] (byte*~) gen_chargen_sprite::sprite#18 ← (byte*) gen_chargen_sprite::sprite#4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#12 gen_chargen_sprite::s_gen_cnt#11 gen_chargen_sprite::b#5 gen_chargen_sprite::sprite#18 ] to:gen_chargen_sprite::@4 gen_chargen_sprite::@14: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 - [274] (byte~) gen_chargen_sprite::s_gen#13 ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::s_gen#13 ] - [275] (byte~) gen_chargen_sprite::s_gen_cnt#12 ← (byte) gen_chargen_sprite::s_gen_cnt#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#13 gen_chargen_sprite::s_gen_cnt#12 ] - [276] (byte*~) gen_chargen_sprite::sprite#19 ← (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#13 gen_chargen_sprite::s_gen_cnt#12 gen_chargen_sprite::sprite#19 ] + [270] (byte~) gen_chargen_sprite::s_gen#13 ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::s_gen#13 ] + [271] (byte~) gen_chargen_sprite::s_gen_cnt#12 ← (byte) gen_chargen_sprite::s_gen_cnt#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#13 gen_chargen_sprite::s_gen_cnt#12 ] + [272] (byte*~) gen_chargen_sprite::sprite#19 ← (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::s_gen#13 gen_chargen_sprite::s_gen_cnt#12 gen_chargen_sprite::sprite#19 ] to:gen_chargen_sprite::@5 place_sprites: scope:[place_sprites] from init::@2 - [277] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] - [278] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] - [279] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] + [273] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] + [274] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] + [275] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] to:place_sprites::@1 place_sprites::@1: scope:[place_sprites] from place_sprites place_sprites::@3 - [280] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@3/(byte~) place_sprites::col#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [280] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@3/(byte~) place_sprites::j2#4 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [280] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@3/(byte~) place_sprites::spr_x#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [280] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@3/(byte~) place_sprites::j#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [280] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@3/(byte~) place_sprites::spr_id#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [281] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [282] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [283] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [284] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [285] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [286] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] - [287] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] - [288] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] - [289] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 ] - [290] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 place_sprites::j#1 ] - [291] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@3 [ place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 place_sprites::j#1 ] + [276] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@3/(byte~) place_sprites::col#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [276] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@3/(byte~) place_sprites::j2#4 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [276] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@3/(byte~) place_sprites::spr_x#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [276] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@3/(byte~) place_sprites::j#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [276] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@3/(byte~) place_sprites::spr_id#3 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [277] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [278] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [279] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [280] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [281] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [282] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] + [283] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] + [284] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] + [285] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 ] + [286] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 place_sprites::j#1 ] + [287] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@3 [ place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 place_sprites::j#1 ] to:place_sprites::@return place_sprites::@return: scope:[place_sprites] from place_sprites::@1 - [292] return [ ] + [288] return [ ] to:@return place_sprites::@3: scope:[place_sprites] from place_sprites::@1 - [293] (byte~) place_sprites::spr_id#3 ← (byte) place_sprites::spr_id#1 [ place_sprites::spr_id#3 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 place_sprites::j#1 ] - [294] (byte~) place_sprites::j#3 ← (byte) place_sprites::j#1 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 ] - [295] (byte~) place_sprites::spr_x#3 ← (byte) place_sprites::spr_x#1 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#3 place_sprites::col#1 place_sprites::j2#2 ] - [296] (byte~) place_sprites::j2#4 ← (byte) place_sprites::j2#2 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#3 place_sprites::j2#4 place_sprites::col#1 ] - [297] (byte~) place_sprites::col#3 ← (byte) place_sprites::col#1 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#3 place_sprites::j2#4 place_sprites::col#3 ] + [289] (byte~) place_sprites::spr_id#3 ← (byte) place_sprites::spr_id#1 [ place_sprites::spr_id#3 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 place_sprites::j#1 ] + [290] (byte~) place_sprites::j#3 ← (byte) place_sprites::j#1 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#2 ] + [291] (byte~) place_sprites::spr_x#3 ← (byte) place_sprites::spr_x#1 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#3 place_sprites::col#1 place_sprites::j2#2 ] + [292] (byte~) place_sprites::j2#4 ← (byte) place_sprites::j2#2 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#3 place_sprites::j2#4 place_sprites::col#1 ] + [293] (byte~) place_sprites::col#3 ← (byte) place_sprites::col#1 [ place_sprites::spr_id#3 place_sprites::j#3 place_sprites::spr_x#3 place_sprites::j2#4 place_sprites::col#3 ] to:place_sprites::@1 Created 51 initial phi equivalence classes @@ -17964,64 +17792,64 @@ Coalesced [12] sin_idx_x#27 ← sin_idx_x#11 Coalesced [13] sin_idx_y#27 ← sin_idx_y#11 Coalesced [17] anim::xidx#8 ← anim::xidx#0 Coalesced [18] anim::yidx#8 ← anim::yidx#0 -Coalesced [32] anim::xidx#11 ← anim::xidx#2 -Coalesced [37] anim::yidx#11 ← anim::yidx#2 -Coalesced [54] sin_idx_y#28 ← sin_idx_y#3 -Coalesced [55] sin_idx_x#28 ← sin_idx_x#3 -Coalesced [56] anim::xidx#9 ← anim::xidx#5 -Coalesced [57] anim::x_msb#8 ← anim::x_msb#1 -Coalesced [58] anim::j2#8 ← anim::j2#2 -Coalesced [59] anim::yidx#9 ← anim::yidx#6 -Coalesced [60] anim::j#7 ← anim::j#1 -Coalesced [61] anim::yidx#10 ← anim::yidx#1 -Coalesced [62] anim::xidx#10 ← anim::xidx#1 -Coalesced [85] init::i#3 ← init::i#1 -Coalesced [92] clear_screen::sc#3 ← clear_screen::sc#1 -Coalesced [95] setFAC::w#6 ← setFAC::w#0 -Coalesced [101] setFAC::w#9 ← setFAC::w#1 -Coalesced [119] progress_cursor#66 ← progress_cursor#22 -Coalesced [122] setFAC::w#7 ← setFAC::w#3 -Coalesced [129] setFAC::w#8 ← setFAC::w#4 -Coalesced [149] gen_sintab::i#13 ← gen_sintab::i#1 -Coalesced [150] progress_idx#66 ← progress_idx#12 -Coalesced [151] progress_cursor#67 ← progress_cursor#11 -Coalesced [157] progress_cursor#69 ← progress_cursor#10 -Coalesced [162] progress_idx#67 ← progress_idx#10 -Coalesced (already) [163] progress_cursor#68 ← progress_cursor#34 -Coalesced [169] prepareMEM::mem#6 ← prepareMEM::mem#2 -Coalesced [181] prepareMEM::mem#8 ← prepareMEM::mem#4 -Coalesced [189] prepareMEM::mem#7 ← prepareMEM::mem#3 -Coalesced [195] prepareMEM::mem#9 ← prepareMEM::mem#0 -Coalesced [201] prepareMEM::mem#10 ← prepareMEM::mem#1 -Coalesced [210] progress_cursor#22 ← progress_init::line#2 -Coalesced [221] gen_sprites::i#4 ← gen_sprites::i#1 -Coalesced [222] gen_sprites::spr#4 ← gen_sprites::spr#1 -Coalesced [228] gen_chargen_sprite::sprite#13 ← gen_chargen_sprite::sprite#0 -Coalesced [231] gen_chargen_sprite::bits#9 ← gen_chargen_sprite::bits#0 -Coalesced [232] gen_chargen_sprite::sprite#15 ← gen_chargen_sprite::sprite#11 -Coalesced [238] gen_chargen_sprite::s_gen#11 ← gen_chargen_sprite::s_gen#5 -Coalesced [239] gen_chargen_sprite::s_gen_cnt#10 ← gen_chargen_sprite::s_gen_cnt#4 -Coalesced [240] gen_chargen_sprite::sprite#17 ← gen_chargen_sprite::sprite#10 -Coalesced [250] gen_chargen_sprite::sprite#20 ← gen_chargen_sprite::sprite#1 -Coalesced [263] gen_chargen_sprite::y#11 ← gen_chargen_sprite::y#1 -Coalesced [264] gen_chargen_sprite::sprite#14 ← gen_chargen_sprite::sprite#2 -Coalesced [265] gen_chargen_sprite::bits#10 ← gen_chargen_sprite::bits#1 -Coalesced [266] gen_chargen_sprite::s_gen#10 ← gen_chargen_sprite::s_gen#6 -Coalesced [267] gen_chargen_sprite::s_gen_cnt#9 ← gen_chargen_sprite::s_gen_cnt#5 -Coalesced [268] gen_chargen_sprite::sprite#16 ← gen_chargen_sprite::sprite#4 -Coalesced [269] gen_chargen_sprite::x#9 ← gen_chargen_sprite::x#1 -Coalesced (already) [270] gen_chargen_sprite::s_gen#12 ← gen_chargen_sprite::s_gen#6 -Coalesced (already) [271] gen_chargen_sprite::s_gen_cnt#11 ← gen_chargen_sprite::s_gen_cnt#5 -Coalesced [272] gen_chargen_sprite::b#5 ← gen_chargen_sprite::b#1 -Coalesced (already) [273] gen_chargen_sprite::sprite#18 ← gen_chargen_sprite::sprite#4 -Coalesced [274] gen_chargen_sprite::s_gen#13 ← gen_chargen_sprite::s_gen#1 -Coalesced [275] gen_chargen_sprite::s_gen_cnt#12 ← gen_chargen_sprite::s_gen_cnt#1 -Coalesced (already) [276] gen_chargen_sprite::sprite#19 ← gen_chargen_sprite::sprite#3 -Coalesced [293] place_sprites::spr_id#3 ← place_sprites::spr_id#1 -Coalesced [294] place_sprites::j#3 ← place_sprites::j#1 -Coalesced [295] place_sprites::spr_x#3 ← place_sprites::spr_x#1 -Coalesced [296] place_sprites::j2#4 ← place_sprites::j2#2 -Coalesced [297] place_sprites::col#3 ← place_sprites::col#1 +Coalesced [30] anim::xidx#11 ← anim::xidx#2 +Coalesced [35] anim::yidx#11 ← anim::yidx#2 +Coalesced [52] sin_idx_y#28 ← sin_idx_y#3 +Coalesced [53] sin_idx_x#28 ← sin_idx_x#3 +Coalesced [54] anim::xidx#9 ← anim::xidx#5 +Coalesced [55] anim::x_msb#8 ← anim::x_msb#1 +Coalesced [56] anim::j2#8 ← anim::j2#2 +Coalesced [57] anim::yidx#9 ← anim::yidx#6 +Coalesced [58] anim::j#7 ← anim::j#1 +Coalesced [59] anim::yidx#10 ← anim::yidx#1 +Coalesced [60] anim::xidx#10 ← anim::xidx#1 +Coalesced [83] init::i#3 ← init::i#1 +Coalesced [90] clear_screen::sc#3 ← clear_screen::sc#1 +Coalesced [93] setFAC::w#6 ← setFAC::w#0 +Coalesced [99] setFAC::w#9 ← setFAC::w#1 +Coalesced [117] progress_cursor#66 ← progress_cursor#22 +Coalesced [120] setFAC::w#7 ← setFAC::w#3 +Coalesced [127] setFAC::w#8 ← setFAC::w#4 +Coalesced [147] gen_sintab::i#13 ← gen_sintab::i#1 +Coalesced [148] progress_idx#66 ← progress_idx#12 +Coalesced [149] progress_cursor#67 ← progress_cursor#11 +Coalesced [154] progress_cursor#69 ← progress_cursor#10 +Coalesced [158] progress_idx#67 ← progress_idx#10 +Coalesced (already) [159] progress_cursor#68 ← progress_cursor#34 +Coalesced [165] prepareMEM::mem#6 ← prepareMEM::mem#2 +Coalesced [177] prepareMEM::mem#8 ← prepareMEM::mem#4 +Coalesced [185] prepareMEM::mem#7 ← prepareMEM::mem#3 +Coalesced [191] prepareMEM::mem#9 ← prepareMEM::mem#0 +Coalesced [197] prepareMEM::mem#10 ← prepareMEM::mem#1 +Coalesced [206] progress_cursor#22 ← progress_init::line#2 +Coalesced [217] gen_sprites::i#4 ← gen_sprites::i#1 +Coalesced [218] gen_sprites::spr#4 ← gen_sprites::spr#1 +Coalesced [224] gen_chargen_sprite::sprite#13 ← gen_chargen_sprite::sprite#0 +Coalesced [227] gen_chargen_sprite::bits#9 ← gen_chargen_sprite::bits#0 +Coalesced [228] gen_chargen_sprite::sprite#15 ← gen_chargen_sprite::sprite#11 +Coalesced [234] gen_chargen_sprite::s_gen#11 ← gen_chargen_sprite::s_gen#5 +Coalesced [235] gen_chargen_sprite::s_gen_cnt#10 ← gen_chargen_sprite::s_gen_cnt#4 +Coalesced [236] gen_chargen_sprite::sprite#17 ← gen_chargen_sprite::sprite#10 +Coalesced [246] gen_chargen_sprite::sprite#20 ← gen_chargen_sprite::sprite#1 +Coalesced [259] gen_chargen_sprite::y#11 ← gen_chargen_sprite::y#1 +Coalesced [260] gen_chargen_sprite::sprite#14 ← gen_chargen_sprite::sprite#2 +Coalesced [261] gen_chargen_sprite::bits#10 ← gen_chargen_sprite::bits#1 +Coalesced [262] gen_chargen_sprite::s_gen#10 ← gen_chargen_sprite::s_gen#6 +Coalesced [263] gen_chargen_sprite::s_gen_cnt#9 ← gen_chargen_sprite::s_gen_cnt#5 +Coalesced [264] gen_chargen_sprite::sprite#16 ← gen_chargen_sprite::sprite#4 +Coalesced [265] gen_chargen_sprite::x#9 ← gen_chargen_sprite::x#1 +Coalesced (already) [266] gen_chargen_sprite::s_gen#12 ← gen_chargen_sprite::s_gen#6 +Coalesced (already) [267] gen_chargen_sprite::s_gen_cnt#11 ← gen_chargen_sprite::s_gen_cnt#5 +Coalesced [268] gen_chargen_sprite::b#5 ← gen_chargen_sprite::b#1 +Coalesced (already) [269] gen_chargen_sprite::sprite#18 ← gen_chargen_sprite::sprite#4 +Coalesced [270] gen_chargen_sprite::s_gen#13 ← gen_chargen_sprite::s_gen#1 +Coalesced [271] gen_chargen_sprite::s_gen_cnt#12 ← gen_chargen_sprite::s_gen_cnt#1 +Coalesced (already) [272] gen_chargen_sprite::sprite#19 ← gen_chargen_sprite::sprite#3 +Coalesced [289] place_sprites::spr_id#3 ← place_sprites::spr_id#1 +Coalesced [290] place_sprites::j#3 ← place_sprites::j#1 +Coalesced [291] place_sprites::spr_x#3 ← place_sprites::spr_x#1 +Coalesced [292] place_sprites::j2#4 ← place_sprites::j2#2 +Coalesced [293] place_sprites::col#3 ← place_sprites::col#1 Coalesced down to 37 phi equivalence classes Culled Empty Block (label) main::@7 Culled Empty Block (label) anim::@9 @@ -18164,439 +17992,435 @@ anim::@1: scope:[anim] from anim anim::@3 [15] (byte) anim::j2#3 ← phi( anim/(byte/signed byte/word/signed word) 12 anim::@3/(byte) anim::j2#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] [15] (byte) anim::x_msb#2 ← phi( anim/(byte/signed byte/word/signed word) 0 anim::@3/(byte) anim::x_msb#1 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] [15] (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] - [16] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] - [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] - [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] - [19] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] - [20] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] - [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] - [22] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] - [23] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] - [24] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] - [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] - [26] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] + [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] + [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] + [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] + [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] + [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] + [21] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] + [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] + [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] + [24] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] to:anim::@6 anim::@6: scope:[anim] from anim::@1 - [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] + [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] to:anim::@2 anim::@2: scope:[anim] from anim::@1 anim::@6 - [28] (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] - [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] - [30] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] + [26] (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] + [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] + [28] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] to:anim::@7 anim::@7: scope:[anim] from anim::@2 - [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] + [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] to:anim::@3 anim::@3: scope:[anim] from anim::@2 anim::@7 - [32] (byte) anim::yidx#6 ← phi( anim::@2/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] - [33] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] - [34] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] - [35] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] - [36] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] + [30] (byte) anim::yidx#6 ← phi( anim::@2/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] + [31] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] + [32] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] + [33] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] + [34] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] to:anim::@8 anim::@8: scope:[anim] from anim::@3 - [37] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] - [38] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] - [39] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] + [35] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] + [36] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] + [37] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] to:anim::@4 anim::@4: scope:[anim] from anim::@14 anim::@8 - [40] (byte) sin_idx_x#11 ← phi( anim::@14/(byte) sin_idx_x#3 anim::@8/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] - [41] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] - [42] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] + [38] (byte) sin_idx_x#11 ← phi( anim::@14/(byte) sin_idx_x#3 anim::@8/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] + [39] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] + [40] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] to:anim::@5 anim::@5: scope:[anim] from anim::@15 anim::@4 - [43] (byte) sin_idx_y#11 ← phi( anim::@4/(byte/signed byte/word/signed word) 0 anim::@15/(byte) sin_idx_y#3 ) [ sin_idx_x#11 sin_idx_y#11 ] - [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] + [41] (byte) sin_idx_y#11 ← phi( anim::@4/(byte/signed byte/word/signed word) 0 anim::@15/(byte) sin_idx_y#3 ) [ sin_idx_x#11 sin_idx_y#11 ] + [42] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] to:anim::@return anim::@return: scope:[anim] from anim::@5 - [45] return [ sin_idx_x#11 sin_idx_y#11 ] + [43] return [ sin_idx_x#11 sin_idx_y#11 ] to:@return anim::@15: scope:[anim] from anim::@4 - [46] phi() [ sin_idx_x#11 sin_idx_y#3 ] + [44] phi() [ sin_idx_x#11 sin_idx_y#3 ] to:anim::@5 anim::@14: scope:[anim] from anim::@8 - [47] phi() [ sin_idx_y#13 sin_idx_x#3 ] + [45] phi() [ sin_idx_y#13 sin_idx_x#3 ] to:anim::@4 init: scope:[init] from main - [48] phi() [ ] - [49] call clear_screen param-assignment [ ] + [46] phi() [ ] + [47] call clear_screen param-assignment [ ] to:init::@1 init::@1: scope:[init] from init init::@1 - [50] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] - [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] - [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] - [53] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] - [54] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] + [48] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] + [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] + [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] + [51] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] + [52] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] to:init::@2 init::@2: scope:[init] from init::@1 - [55] phi() [ ] - [56] call place_sprites param-assignment [ ] + [53] phi() [ ] + [54] call place_sprites param-assignment [ ] to:init::@4 init::@4: scope:[init] from init::@2 - [57] phi() [ ] - [58] call gen_sprites param-assignment [ ] + [55] phi() [ ] + [56] call gen_sprites param-assignment [ ] to:init::@5 init::@5: scope:[init] from init::@4 - [59] phi() [ ] - [60] call progress_init param-assignment [ progress_init::line#2 ] + [57] phi() [ ] + [58] call progress_init param-assignment [ progress_init::line#2 ] to:init::@6 init::@6: scope:[init] from init::@5 - [61] phi() [ progress_init::line#2 ] - [62] call gen_sintab param-assignment [ ] + [59] phi() [ progress_init::line#2 ] + [60] call gen_sintab param-assignment [ ] to:init::@7 init::@7: scope:[init] from init::@6 - [63] phi() [ ] - [64] call progress_init param-assignment [ progress_init::line#2 ] + [61] phi() [ ] + [62] call progress_init param-assignment [ progress_init::line#2 ] to:init::@8 init::@8: scope:[init] from init::@7 - [65] phi() [ progress_init::line#2 ] - [66] call gen_sintab param-assignment [ ] + [63] phi() [ progress_init::line#2 ] + [64] call gen_sintab param-assignment [ ] to:init::@9 init::@9: scope:[init] from init::@8 - [67] phi() [ ] - [68] call clear_screen param-assignment [ ] + [65] phi() [ ] + [66] call clear_screen param-assignment [ ] to:init::@return init::@return: scope:[init] from init::@9 - [69] return [ ] + [67] return [ ] to:@return clear_screen: scope:[clear_screen] from init init::@9 - [70] phi() [ ] + [68] phi() [ ] to:clear_screen::@1 clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 - [71] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@1/(byte*) clear_screen::sc#1 ) [ clear_screen::sc#2 ] - [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] - [73] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] - [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] + [69] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@1/(byte*) clear_screen::sc#1 ) [ clear_screen::sc#2 ] + [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] + [71] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] + [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] to:clear_screen::@return clear_screen::@return: scope:[clear_screen] from clear_screen::@1 - [75] return [ ] + [73] return [ ] to:@return gen_sintab: scope:[gen_sintab] from init::@6 init::@8 - [76] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [76] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [76] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [76] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] - [78] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [74] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [74] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [74] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [74] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] + [76] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@3 gen_sintab::@3: scope:[gen_sintab] from gen_sintab - [79] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [80] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [77] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [78] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@4 gen_sintab::@4: scope:[gen_sintab] from gen_sintab::@3 asm { lda#0ldx#0ldy#0 } - [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] - [83] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] + [81] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@5 gen_sintab::@5: scope:[gen_sintab] from gen_sintab::@4 - [84] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [85] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [82] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [83] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@6 gen_sintab::@6: scope:[gen_sintab] from gen_sintab::@5 - [86] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [87] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [84] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [85] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@7 gen_sintab::@7: scope:[gen_sintab] from gen_sintab::@6 - [88] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [89] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [86] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [87] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@8 gen_sintab::@8: scope:[gen_sintab] from gen_sintab::@7 - [90] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [91] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [88] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [89] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@9 gen_sintab::@9: scope:[gen_sintab] from gen_sintab::@8 - [92] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [93] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [90] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [91] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@10 gen_sintab::@10: scope:[gen_sintab] from gen_sintab::@9 - [94] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [95] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [92] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [93] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@11 gen_sintab::@11: scope:[gen_sintab] from gen_sintab::@10 - [96] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [97] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [94] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [95] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@12 gen_sintab::@12: scope:[gen_sintab] from gen_sintab::@11 - [98] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] - [99] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [96] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] + [97] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] to:gen_sintab::@1 gen_sintab::@1: scope:[gen_sintab] from gen_sintab::@12 gen_sintab::@23 - [100] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@23/(byte*) progress_cursor#11 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [100] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) progress_idx#12 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [100] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) gen_sintab::i#1 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] - [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [98] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@23/(byte*) progress_cursor#11 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [98] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) progress_idx#12 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [98] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) gen_sintab::i#1 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] + [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@14 gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@1 - [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [104] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [101] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [102] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@15 gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14 - [105] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@16 gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15 - [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] - [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] + [106] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@17 gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16 - [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [107] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [108] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@18 gen_sintab::@18: scope:[gen_sintab] from gen_sintab::@17 - [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [112] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [110] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@19 gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18 - [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [114] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [112] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@20 gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19 - [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] to:gen_sintab::@21 gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20 - [117] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [118] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] - [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] + [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [116] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] + [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] to:gen_sintab::@22 gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21 - [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] - [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] - [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] - [123] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] + [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] + [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] + [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] + [121] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] to:gen_sintab::@23 gen_sintab::@23: scope:[gen_sintab] from gen_sintab::@22 - [124] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] - [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] + [122] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] + [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] to:gen_sintab::@return gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 - [126] return [ ] + [124] return [ ] to:@return progress_inc: scope:[progress_inc] from gen_sintab::@22 - [127] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] - [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] + [125] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] + [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - [129] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] - [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] - [131] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] + [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] + [128] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - [132] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) [ progress_idx#12 progress_cursor#11 ] - [132] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] - [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] - [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] + [129] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) [ progress_idx#12 progress_cursor#11 ] + [129] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] + [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 - [135] return [ progress_idx#12 progress_cursor#11 ] + [131] return [ progress_idx#12 progress_cursor#11 ] to:@return getFAC: scope:[getFAC] from gen_sintab::@21 asm { jsr$b1aasty$festa$ff } - [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] + [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] to:getFAC::@return getFAC::@return: scope:[getFAC] from getFAC - [138] return [ getFAC::return#0 ] + [134] return [ getFAC::return#0 ] to:@return addMEMtoFAC: scope:[addMEMtoFAC] from gen_sintab::@11 gen_sintab::@20 - [139] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] - [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] - [141] call prepareMEM param-assignment [ ] + [135] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] + [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] + [137] call prepareMEM param-assignment [ ] to:addMEMtoFAC::@1 addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC asm { lda$feldy$ffjsr$b867 } to:addMEMtoFAC::@return addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1 - [143] return [ ] + [139] return [ ] to:@return prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC - [144] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] - [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] - [146] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] - [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] - [148] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] + [140] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] + [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] + [142] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] + [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] + [144] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] to:prepareMEM::@return prepareMEM::@return: scope:[prepareMEM] from prepareMEM - [149] return [ ] + [145] return [ ] to:@return mulFACbyMEM: scope:[mulFACbyMEM] from gen_sintab::@14 gen_sintab::@19 - [150] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] - [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] - [152] call prepareMEM param-assignment [ ] + [146] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] + [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] + [148] call prepareMEM param-assignment [ ] to:mulFACbyMEM::@1 mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM asm { lda$feldy$ffjsr$ba28 } to:mulFACbyMEM::@return mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1 - [154] return [ ] + [150] return [ ] to:@return sinFAC: scope:[sinFAC] from gen_sintab::@18 asm { jsr$e26b } to:sinFAC::@return sinFAC::@return: scope:[sinFAC] from sinFAC - [156] return [ ] + [152] return [ ] to:@return divMEMbyFAC: scope:[divMEMbyFAC] from gen_sintab::@17 gen_sintab::@9 - [157] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] - [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] - [159] call prepareMEM param-assignment [ ] + [153] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] + [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] + [155] call prepareMEM param-assignment [ ] to:divMEMbyFAC::@1 divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC asm { lda$feldy$ffjsr$bb0f } to:divMEMbyFAC::@return divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1 - [161] return [ ] + [157] return [ ] to:@return setFAC: scope:[setFAC] from gen_sintab gen_sintab::@1 gen_sintab::@16 gen_sintab::@4 gen_sintab::@8 - [162] (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@1/(word) setFAC::w#3 gen_sintab::@16/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] - [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] - [164] call prepareMEM param-assignment [ ] + [158] (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@1/(word) setFAC::w#3 gen_sintab::@16/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] + [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] + [160] call prepareMEM param-assignment [ ] to:setFAC::@1 setFAC::@1: scope:[setFAC] from setFAC asm { ldy$felda$ffjsr$b391 } to:setFAC::@return setFAC::@return: scope:[setFAC] from setFAC::@1 - [166] return [ ] + [162] return [ ] to:@return setMEMtoFAC: scope:[setMEMtoFAC] from gen_sintab::@10 gen_sintab::@12 gen_sintab::@15 gen_sintab::@5 gen_sintab::@7 - [167] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] - [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] - [169] call prepareMEM param-assignment [ ] + [163] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] + [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] + [165] call prepareMEM param-assignment [ ] to:setMEMtoFAC::@1 setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC asm { ldx$feldy$ffjsr$bbd4 } to:setMEMtoFAC::@return setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1 - [171] return [ ] + [167] return [ ] to:@return subFACfromARG: scope:[subFACfromARG] from gen_sintab::@6 asm { jsr$b853 } to:subFACfromARG::@return subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG - [173] return [ ] + [169] return [ ] to:@return setARGtoFAC: scope:[setARGtoFAC] from gen_sintab::@3 asm { jsr$bc0f } to:setARGtoFAC::@return setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC - [175] return [ ] + [171] return [ ] to:@return progress_init: scope:[progress_init] from init::@5 init::@7 - [176] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] + [172] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] to:progress_init::@return progress_init::@return: scope:[progress_init] from progress_init - [177] return [ progress_init::line#2 ] + [173] return [ progress_init::line#2 ] to:@return gen_sprites: scope:[gen_sprites] from init::@4 - [178] phi() [ ] + [174] phi() [ ] to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 - [179] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] - [179] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] - [180] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] - [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] - [182] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] + [175] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] + [175] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] + [176] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] + [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] + [178] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 - [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] - [184] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] - [185] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] + [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] + [180] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] + [181] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 - [186] return [ ] + [182] return [ ] to:@return gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 - [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] - [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] - [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] + [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] + [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] + [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] asm { sei } - [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] + [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 - [192] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] - [192] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] - [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] + [188] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] + [188] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] + [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 - [194] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [194] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [194] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [194] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [194] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] - [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] - [196] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [190] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [190] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [190] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [190] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [190] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] + [192] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] to:gen_chargen_sprite::@6 gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 - [197] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] + [193] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] to:gen_chargen_sprite::@3 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 - [198] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] + [194] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] to:gen_chargen_sprite::@4 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 gen_chargen_sprite::@5 - [199] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [199] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [199] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [199] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] - [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] - [202] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] - [203] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] + [195] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [195] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [195] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [195] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] + [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] + [198] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] + [199] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] to:gen_chargen_sprite::@7 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 - [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] - [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] - [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] - [207] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] + [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] + [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] + [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] + [203] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] to:gen_chargen_sprite::@5 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 - [208] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] - [208] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] - [208] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] - [209] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] - [210] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] + [204] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] + [204] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] + [204] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] + [205] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] + [206] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] to:gen_chargen_sprite::@8 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - [211] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] - [212] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] - [213] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] + [207] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] + [208] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] + [209] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] - [215] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] - [216] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] + [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] + [211] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] + [212] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 - [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] + [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] asm { cli } to:gen_chargen_sprite::@return gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 - [219] return [ ] + [215] return [ ] to:@return place_sprites: scope:[place_sprites] from init::@2 - [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] - [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] - [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] + [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] + [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] + [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] to:place_sprites::@1 place_sprites::@1: scope:[place_sprites] from place_sprites place_sprites::@1 - [223] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@1/(byte) place_sprites::col#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [223] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j2#2 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [223] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@1/(byte) place_sprites::spr_x#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [223] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [223] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@1/(byte) place_sprites::spr_id#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] - [225] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] - [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] - [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] - [231] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] - [232] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] - [233] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] - [234] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] + [219] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@1/(byte) place_sprites::col#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [219] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j2#2 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [219] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@1/(byte) place_sprites::spr_x#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [219] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [219] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@1/(byte) place_sprites::spr_id#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] + [221] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] + [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] + [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] + [227] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] + [228] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] + [229] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] + [230] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] to:place_sprites::@return place_sprites::@return: scope:[place_sprites] from place_sprites::@1 - [235] return [ ] + [231] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -18639,439 +18463,435 @@ anim::@1: scope:[anim] from anim anim::@3 [15] (byte) anim::j2#3 ← phi( anim/(byte/signed byte/word/signed word) 12 anim::@3/(byte) anim::j2#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ) [15] (byte) anim::x_msb#2 ← phi( anim/(byte/signed byte/word/signed word) 0 anim::@3/(byte) anim::x_msb#1 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ) [15] (byte) anim::xidx#3 ← phi( anim/(byte) anim::xidx#0 anim::@3/(byte) anim::xidx#5 ) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 ] ) - [16] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ) - [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) - [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) - [19] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ) - [20] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) - [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) - [22] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) - [23] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ) - [24] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) - [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) - [26] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) + [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) + [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) + [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) + [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) + [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) + [21] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) + [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) + [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) + [24] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) to:anim::@6 anim::@6: scope:[anim] from anim::@1 - [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) + [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) to:anim::@2 anim::@2: scope:[anim] from anim::@1 anim::@6 - [28] (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ) - [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) - [30] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) + [26] (byte) anim::xidx#5 ← phi( anim::@1/(byte) anim::xidx#1 anim::@6/(byte) anim::xidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::xidx#5 anim::x_msb#1 ] ) + [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) + [28] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) to:anim::@7 anim::@7: scope:[anim] from anim::@2 - [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) + [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) to:anim::@3 anim::@3: scope:[anim] from anim::@2 anim::@7 - [32] (byte) anim::yidx#6 ← phi( anim::@2/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ) - [33] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) - [34] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) - [35] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) - [36] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) + [30] (byte) anim::yidx#6 ← phi( anim::@2/(byte) anim::yidx#1 anim::@7/(byte) anim::yidx#2 ) [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 ] ) + [31] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) + [32] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) + [33] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) + [34] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) to:anim::@8 anim::@8: scope:[anim] from anim::@3 - [37] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) - [38] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) - [39] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) + [35] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) + [36] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) + [37] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) to:anim::@4 anim::@4: scope:[anim] from anim::@14 anim::@8 - [40] (byte) sin_idx_x#11 ← phi( anim::@14/(byte) sin_idx_x#3 anim::@8/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#11 ] ) - [41] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) - [42] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) + [38] (byte) sin_idx_x#11 ← phi( anim::@14/(byte) sin_idx_x#3 anim::@8/(byte/signed byte/word/signed word) 0 ) [ sin_idx_y#13 sin_idx_x#11 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#11 ] ) + [39] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) + [40] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) to:anim::@5 anim::@5: scope:[anim] from anim::@15 anim::@4 - [43] (byte) sin_idx_y#11 ← phi( anim::@4/(byte/signed byte/word/signed word) 0 anim::@15/(byte) sin_idx_y#3 ) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) - [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + [41] (byte) sin_idx_y#11 ← phi( anim::@4/(byte/signed byte/word/signed word) 0 anim::@15/(byte) sin_idx_y#3 ) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + [42] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) to:anim::@return anim::@return: scope:[anim] from anim::@5 - [45] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + [43] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) to:@return anim::@15: scope:[anim] from anim::@4 - [46] phi() [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) + [44] phi() [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) to:anim::@5 anim::@14: scope:[anim] from anim::@8 - [47] phi() [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) + [45] phi() [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) to:anim::@4 init: scope:[init] from main - [48] phi() [ ] ( main:2::init:5 [ ] ) - [49] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + [46] phi() [ ] ( main:2::init:5 [ ] ) + [47] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@1 init::@1: scope:[init] from init init::@1 - [50] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) - [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) - [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) - [53] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) - [54] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) + [48] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init/(byte/signed byte/word/signed word) 0 ) [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) + [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) + [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) + [51] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) + [52] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) to:init::@2 init::@2: scope:[init] from init::@1 - [55] phi() [ ] ( main:2::init:5 [ ] ) - [56] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + [53] phi() [ ] ( main:2::init:5 [ ] ) + [54] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@4 init::@4: scope:[init] from init::@2 - [57] phi() [ ] ( main:2::init:5 [ ] ) - [58] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + [55] phi() [ ] ( main:2::init:5 [ ] ) + [56] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@5 init::@5: scope:[init] from init::@4 - [59] phi() [ ] ( main:2::init:5 [ ] ) - [60] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [57] phi() [ ] ( main:2::init:5 [ ] ) + [58] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) to:init::@6 init::@6: scope:[init] from init::@5 - [61] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - [62] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + [59] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [60] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@7 init::@7: scope:[init] from init::@6 - [63] phi() [ ] ( main:2::init:5 [ ] ) - [64] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [61] phi() [ ] ( main:2::init:5 [ ] ) + [62] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) to:init::@8 init::@8: scope:[init] from init::@7 - [65] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - [66] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + [63] phi() [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + [64] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@9 init::@9: scope:[init] from init::@8 - [67] phi() [ ] ( main:2::init:5 [ ] ) - [68] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + [65] phi() [ ] ( main:2::init:5 [ ] ) + [66] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) to:init::@return init::@return: scope:[init] from init::@9 - [69] return [ ] ( main:2::init:5 [ ] ) + [67] return [ ] ( main:2::init:5 [ ] ) to:@return clear_screen: scope:[clear_screen] from init init::@9 - [70] phi() [ ] ( main:2::init:5::clear_screen:49 [ ] main:2::init:5::clear_screen:68 [ ] ) + [68] phi() [ ] ( main:2::init:5::clear_screen:47 [ ] main:2::init:5::clear_screen:66 [ ] ) to:clear_screen::@1 clear_screen::@1: scope:[clear_screen] from clear_screen clear_screen::@1 - [71] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@1/(byte*) clear_screen::sc#1 ) [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) - [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) - [73] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) - [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) + [69] (byte*) clear_screen::sc#2 ← phi( clear_screen/(const byte*) SCREEN#0 clear_screen::@1/(byte*) clear_screen::sc#1 ) [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) + [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) + [71] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) + [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) to:clear_screen::@return clear_screen::@return: scope:[clear_screen] from clear_screen::@1 - [75] return [ ] ( main:2::init:5::clear_screen:49 [ ] main:2::init:5::clear_screen:68 [ ] ) + [73] return [ ] ( main:2::init:5::clear_screen:47 [ ] main:2::init:5::clear_screen:66 [ ] ) to:@return gen_sintab: scope:[gen_sintab] from init::@6 init::@8 - [76] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [76] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [76] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [76] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) - [78] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte*) gen_sintab::sintab#12 ← phi( init::@6/(const byte[]) sintab_x#0 init::@8/(const byte[]) sintab_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte) gen_sintab::length#10 ← phi( init::@6/(const byte) sinlen_x#0 init::@8/(const byte) sinlen_y#0 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte) gen_sintab::min#2 ← phi( init::@6/(byte/signed byte/word/signed word) 0 init::@8/(byte/signed byte/word/signed word) 50 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [74] (byte) gen_sintab::max#2 ← phi( init::@6/(byte/word/signed word) 255 init::@8/(byte/word/signed word) 208 ) [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::max#2 gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) + [76] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@3 gen_sintab::@3: scope:[gen_sintab] from gen_sintab - [79] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [80] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [77] phi() [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [78] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@4 gen_sintab::@4: scope:[gen_sintab] from gen_sintab::@3 asm { lda#0ldx#0ldy#0 } - [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) - [83] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) + [81] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@5 gen_sintab::@5: scope:[gen_sintab] from gen_sintab::@4 - [84] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [85] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [82] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [83] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@6 gen_sintab::@6: scope:[gen_sintab] from gen_sintab::@5 - [86] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [87] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [84] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [85] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@7 gen_sintab::@7: scope:[gen_sintab] from gen_sintab::@6 - [88] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [89] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [86] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [87] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@8 gen_sintab::@8: scope:[gen_sintab] from gen_sintab::@7 - [90] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [91] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [88] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [89] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@9 gen_sintab::@9: scope:[gen_sintab] from gen_sintab::@8 - [92] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [93] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [90] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [91] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@10 gen_sintab::@10: scope:[gen_sintab] from gen_sintab::@9 - [94] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [95] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [92] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [93] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@11 gen_sintab::@11: scope:[gen_sintab] from gen_sintab::@10 - [96] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [97] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [94] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [95] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@12 gen_sintab::@12: scope:[gen_sintab] from gen_sintab::@11 - [98] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - [99] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [96] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [97] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:gen_sintab::@1 gen_sintab::@1: scope:[gen_sintab] from gen_sintab::@12 gen_sintab::@23 - [100] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@23/(byte*) progress_cursor#11 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [100] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) progress_idx#12 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [100] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) gen_sintab::i#1 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) - [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [98] (byte*) progress_cursor#34 ← phi( gen_sintab::@12/(byte*) progress_init::line#2 gen_sintab::@23/(byte*) progress_cursor#11 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [98] (byte) progress_idx#34 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) progress_idx#12 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [98] (byte) gen_sintab::i#10 ← phi( gen_sintab::@12/(byte/signed byte/word/signed word) 0 gen_sintab::@23/(byte) gen_sintab::i#1 ) [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) + [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@14 gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@1 - [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [104] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [101] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [102] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@15 gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14 - [105] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [103] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@16 gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15 - [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) - [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) + [106] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@17 gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16 - [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [107] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [108] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@18 gen_sintab::@18: scope:[gen_sintab] from gen_sintab::@17 - [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [112] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [109] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [110] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@19 gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18 - [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [114] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [111] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [112] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@20 gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19 - [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [113] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:gen_sintab::@21 gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20 - [117] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [118] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) - [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) + [115] phi() [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [116] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) to:gen_sintab::@22 gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21 - [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) - [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) - [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - [123] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) + [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) + [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [121] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) to:gen_sintab::@23 gen_sintab::@23: scope:[gen_sintab] from gen_sintab::@22 - [124] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) - [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) + [122] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) + [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) to:gen_sintab::@return gen_sintab::@return: scope:[gen_sintab] from gen_sintab::@23 - [126] return [ ] ( main:2::init:5::gen_sintab:62 [ ] main:2::init:5::gen_sintab:66 [ ] ) + [124] return [ ] ( main:2::init:5::gen_sintab:60 [ ] main:2::init:5::gen_sintab:64 [ ] ) to:@return progress_inc: scope:[progress_inc] from gen_sintab::@22 - [127] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) - [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) + [125] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) + [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) to:progress_inc::@2 progress_inc::@2: scope:[progress_inc] from progress_inc - [129] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] ) - [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) - [131] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) + [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) + [128] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) to:progress_inc::@1 progress_inc::@1: scope:[progress_inc] from progress_inc progress_inc::@2 - [132] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) - [132] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) - [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] ) - [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [129] (byte*) progress_cursor#11 ← phi( progress_inc/(byte*) progress_cursor#34 progress_inc::@2/(byte*) progress_cursor#10 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [129] (byte) progress_idx#12 ← phi( progress_inc/(byte) progress_idx#10 progress_inc::@2/(byte/signed byte/word/signed word) 0 ) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) to:progress_inc::@return progress_inc::@return: scope:[progress_inc] from progress_inc::@1 - [135] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + [131] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) to:@return getFAC: scope:[getFAC] from gen_sintab::@21 asm { jsr$b1aasty$festa$ff } - [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) to:getFAC::@return getFAC::@return: scope:[getFAC] from getFAC - [138] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + [134] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) to:@return addMEMtoFAC: scope:[addMEMtoFAC] from gen_sintab::@11 gen_sintab::@20 - [139] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] ) - [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) - [141] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [135] (byte*) addMEMtoFAC::mem#2 ← phi( gen_sintab::@11/(const byte[]) gen_sintab::f_min#0 gen_sintab::@20/(const byte[]) gen_sintab::f_min#0 ) [ addMEMtoFAC::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 addMEMtoFAC::mem#2 ] ) + [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) + [137] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:addMEMtoFAC::@1 addMEMtoFAC::@1: scope:[addMEMtoFAC] from addMEMtoFAC asm { lda$feldy$ffjsr$b867 } to:addMEMtoFAC::@return addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1 - [143] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [139] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC - [144] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) - [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) - [146] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) - [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) - [148] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [140] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(byte*) prepareMEM::mem#2 divMEMbyFAC/(byte*) prepareMEM::mem#3 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) + [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) + [142] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) + [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) + [144] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:prepareMEM::@return prepareMEM::@return: scope:[prepareMEM] from prepareMEM - [149] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [145] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return mulFACbyMEM: scope:[mulFACbyMEM] from gen_sintab::@14 gen_sintab::@19 - [150] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] ) - [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) - [152] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [146] (byte*) mulFACbyMEM::mem#2 ← phi( gen_sintab::@14/(const byte*) gen_sintab::f_2pi#0 gen_sintab::@19/(const byte[]) gen_sintab::f_amp#0 ) [ mulFACbyMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 mulFACbyMEM::mem#2 ] ) + [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) + [148] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:mulFACbyMEM::@1 mulFACbyMEM::@1: scope:[mulFACbyMEM] from mulFACbyMEM asm { lda$feldy$ffjsr$ba28 } to:mulFACbyMEM::@return mulFACbyMEM::@return: scope:[mulFACbyMEM] from mulFACbyMEM::@1 - [154] return [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [150] return [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return sinFAC: scope:[sinFAC] from gen_sintab::@18 asm { jsr$e26b } to:sinFAC::@return sinFAC::@return: scope:[sinFAC] from sinFAC - [156] return [ ] ( main:2::init:5::gen_sintab:62::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [152] return [ ] ( main:2::init:5::gen_sintab:60::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return divMEMbyFAC: scope:[divMEMbyFAC] from gen_sintab::@17 gen_sintab::@9 - [157] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] ) - [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) - [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [153] (byte*) divMEMbyFAC::mem#2 ← phi( gen_sintab::@17/(const byte[]) gen_sintab::f_i#0 gen_sintab::@9/(const byte[]) gen_sintab::f_amp#0 ) [ divMEMbyFAC::mem#2 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 divMEMbyFAC::mem#2 ] ) + [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) + [155] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:divMEMbyFAC::@1 divMEMbyFAC::@1: scope:[divMEMbyFAC] from divMEMbyFAC asm { lda$feldy$ffjsr$bb0f } to:divMEMbyFAC::@return divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1 - [161] return [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [157] return [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return setFAC: scope:[setFAC] from gen_sintab gen_sintab::@1 gen_sintab::@16 gen_sintab::@4 gen_sintab::@8 - [162] (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@1/(word) setFAC::w#3 gen_sintab::@16/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] ) - [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) - [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [158] (word) setFAC::w#5 ← phi( gen_sintab/(word) setFAC::w#0 gen_sintab::@1/(word) setFAC::w#3 gen_sintab::@16/(word) setFAC::w#4 gen_sintab::@4/(word) setFAC::w#1 gen_sintab::@8/(byte/signed byte/word/signed word) 2 ) [ setFAC::w#5 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#5 ] ) + [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) + [160] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:setFAC::@1 setFAC::@1: scope:[setFAC] from setFAC asm { ldy$felda$ffjsr$b391 } to:setFAC::@return setFAC::@return: scope:[setFAC] from setFAC::@1 - [166] return [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [162] return [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return setMEMtoFAC: scope:[setMEMtoFAC] from gen_sintab::@10 gen_sintab::@12 gen_sintab::@15 gen_sintab::@5 gen_sintab::@7 - [167] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] ) - [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) - [169] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [163] (byte*) setMEMtoFAC::mem#5 ← phi( gen_sintab::@10/(const byte[]) gen_sintab::f_amp#0 gen_sintab::@12/(const byte[]) gen_sintab::f_min#0 gen_sintab::@15/(const byte[]) gen_sintab::f_i#0 gen_sintab::@5/(const byte[]) gen_sintab::f_min#0 gen_sintab::@7/(const byte[]) gen_sintab::f_amp#0 ) [ setMEMtoFAC::mem#5 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setMEMtoFAC::mem#5 ] ) + [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) + [165] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:setMEMtoFAC::@1 setMEMtoFAC::@1: scope:[setMEMtoFAC] from setMEMtoFAC asm { ldx$feldy$ffjsr$bbd4 } to:setMEMtoFAC::@return setMEMtoFAC::@return: scope:[setMEMtoFAC] from setMEMtoFAC::@1 - [171] return [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + [167] return [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) to:@return subFACfromARG: scope:[subFACfromARG] from gen_sintab::@6 asm { jsr$b853 } to:subFACfromARG::@return subFACfromARG::@return: scope:[subFACfromARG] from subFACfromARG - [173] return [ ] ( main:2::init:5::gen_sintab:62::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [169] return [ ] ( main:2::init:5::gen_sintab:60::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:@return setARGtoFAC: scope:[setARGtoFAC] from gen_sintab::@3 asm { jsr$bc0f } to:setARGtoFAC::@return setARGtoFAC::@return: scope:[setARGtoFAC] from setARGtoFAC - [175] return [ ] ( main:2::init:5::gen_sintab:62::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + [171] return [ ] ( main:2::init:5::gen_sintab:60::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) to:@return progress_init: scope:[progress_init] from init::@5 init::@7 - [176] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + [172] (byte*) progress_init::line#2 ← phi( init::@5/(const byte*) SCREEN#0 init::@7/(const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 ) [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) to:progress_init::@return progress_init::@return: scope:[progress_init] from progress_init - [177] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + [173] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) to:@return gen_sprites: scope:[gen_sprites] from init::@4 - [178] phi() [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + [174] phi() [ ] ( main:2::init:5::gen_sprites:56 [ ] ) to:gen_sprites::@1 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 - [179] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) - [179] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) - [180] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) - [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) - [182] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [175] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte[]) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [175] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [176] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) + [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) + [178] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) to:gen_sprites::@3 gen_sprites::@3: scope:[gen_sprites] from gen_sprites::@1 - [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) - [184] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) - [185] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) + [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) + [180] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) + [181] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) to:gen_sprites::@return gen_sprites::@return: scope:[gen_sprites] from gen_sprites::@3 - [186] return [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + [182] return [ ] ( main:2::init:5::gen_sprites:56 [ ] ) to:@return gen_chargen_sprite: scope:[gen_chargen_sprite] from gen_sprites::@1 - [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) - [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) - [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) + [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) + [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) + [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) asm { sei } - [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) + [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) to:gen_chargen_sprite::@1 gen_chargen_sprite::@1: scope:[gen_chargen_sprite] from gen_chargen_sprite gen_chargen_sprite::@9 - [192] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) - [192] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) - [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) + [188] (byte*) gen_chargen_sprite::sprite#11 ← phi( gen_chargen_sprite/(byte*) gen_chargen_sprite::sprite#0 gen_chargen_sprite::@9/(byte*) gen_chargen_sprite::sprite#2 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) + [188] (byte) gen_chargen_sprite::y#2 ← phi( gen_chargen_sprite/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@9/(byte) gen_chargen_sprite::y#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 ] ) + [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) to:gen_chargen_sprite::@2 gen_chargen_sprite::@2: scope:[gen_chargen_sprite] from gen_chargen_sprite::@1 gen_chargen_sprite::@8 - [194] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [194] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) - [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) - [196] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::x#6 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::x#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte*) gen_chargen_sprite::sprite#10 ← phi( gen_chargen_sprite::@1/(byte*) gen_chargen_sprite::sprite#11 gen_chargen_sprite::@8/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::s_gen_cnt#4 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::s_gen#5 ← phi( gen_chargen_sprite::@1/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [190] (byte) gen_chargen_sprite::bits#2 ← phi( gen_chargen_sprite::@1/(byte) gen_chargen_sprite::bits#0 gen_chargen_sprite::@8/(byte) gen_chargen_sprite::bits#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) + [192] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) to:gen_chargen_sprite::@6 gen_chargen_sprite::@6: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 - [197] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) + [193] phi() [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) to:gen_chargen_sprite::@3 gen_chargen_sprite::@3: scope:[gen_chargen_sprite] from gen_chargen_sprite::@2 gen_chargen_sprite::@6 - [198] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ) + [194] (byte) gen_chargen_sprite::c#3 ← phi( gen_chargen_sprite::@2/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@6/(byte/signed byte/word/signed word) 1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 ] ) to:gen_chargen_sprite::@4 gen_chargen_sprite::@4: scope:[gen_chargen_sprite] from gen_chargen_sprite::@3 gen_chargen_sprite::@5 - [199] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [199] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [199] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [199] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) - [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) - [202] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) - [203] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) + [195] (byte*) gen_chargen_sprite::sprite#3 ← phi( gen_chargen_sprite::@3/(byte*) gen_chargen_sprite::sprite#10 gen_chargen_sprite::@5/(byte*) gen_chargen_sprite::sprite#4 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [195] (byte) gen_chargen_sprite::b#2 ← phi( gen_chargen_sprite::@3/(byte/signed byte/word/signed word) 0 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::b#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [195] (byte) gen_chargen_sprite::s_gen_cnt#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen_cnt#5 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [195] (byte) gen_chargen_sprite::s_gen#3 ← phi( gen_chargen_sprite::@3/(byte) gen_chargen_sprite::s_gen#5 gen_chargen_sprite::@5/(byte) gen_chargen_sprite::s_gen#6 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) + [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) + [198] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) + [199] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) to:gen_chargen_sprite::@7 gen_chargen_sprite::@7: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 - [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) - [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) - [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) - [207] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) + [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) + [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) + [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) + [203] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) to:gen_chargen_sprite::@5 gen_chargen_sprite::@5: scope:[gen_chargen_sprite] from gen_chargen_sprite::@4 gen_chargen_sprite::@7 - [208] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) - [208] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) - [208] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) - [209] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) - [210] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) + [204] (byte*) gen_chargen_sprite::sprite#4 ← phi( gen_chargen_sprite::@4/(byte*) gen_chargen_sprite::sprite#3 gen_chargen_sprite::@7/(byte*) gen_chargen_sprite::sprite#1 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) + [204] (byte) gen_chargen_sprite::s_gen_cnt#5 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen_cnt#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) + [204] (byte) gen_chargen_sprite::s_gen#6 ← phi( gen_chargen_sprite::@4/(byte) gen_chargen_sprite::s_gen#1 gen_chargen_sprite::@7/(byte/signed byte/word/signed word) 0 ) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 ] ) + [205] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) + [206] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) to:gen_chargen_sprite::@8 gen_chargen_sprite::@8: scope:[gen_chargen_sprite] from gen_chargen_sprite::@5 - [211] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) - [212] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) - [213] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) + [207] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) + [208] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) + [209] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) to:gen_chargen_sprite::@9 gen_chargen_sprite::@9: scope:[gen_chargen_sprite] from gen_chargen_sprite::@8 - [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) - [215] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) - [216] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) + [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) + [211] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) + [212] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) to:gen_chargen_sprite::@10 gen_chargen_sprite::@10: scope:[gen_chargen_sprite] from gen_chargen_sprite::@9 - [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) asm { cli } to:gen_chargen_sprite::@return gen_chargen_sprite::@return: scope:[gen_chargen_sprite] from gen_chargen_sprite::@10 - [219] return [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + [215] return [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) to:@return place_sprites: scope:[place_sprites] from init::@2 - [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) - [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) - [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) + [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) + [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) + [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) to:place_sprites::@1 place_sprites::@1: scope:[place_sprites] from place_sprites place_sprites::@1 - [223] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@1/(byte) place_sprites::col#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j2#2 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@1/(byte) place_sprites::spr_x#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [223] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@1/(byte) place_sprites::spr_id#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) - [225] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) - [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) - [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) - [231] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) - [232] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) - [233] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) - [234] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) + [219] (byte) place_sprites::col#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 5 place_sprites::@1/(byte) place_sprites::col#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::j2#3 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j2#2 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::spr_x#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 60 place_sprites::@1/(byte) place_sprites::spr_x#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::j#2 ← phi( place_sprites/(byte/signed byte/word/signed word) 0 place_sprites::@1/(byte) place_sprites::j#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [219] (byte) place_sprites::spr_id#2 ← phi( place_sprites/((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 place_sprites::@1/(byte) place_sprites::spr_id#1 ) [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) + [221] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) + [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) + [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) + [227] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) + [228] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) + [229] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) + [230] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) to:place_sprites::@return place_sprites::@return: scope:[place_sprites] from place_sprites::@1 - [235] return [ ] ( main:2::init:5::place_sprites:56 [ ] ) + [231] return [ ] ( main:2::init:5::place_sprites:54 [ ] ) to:@return DOMINATORS @@ -19281,34 +19101,32 @@ VARIABLE REGISTER WEIGHTS (byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem#2 2.0 (void()) anim() -(byte~) anim::$1 202.0 -(byte~) anim::$3 101.0 -(byte~) anim::$4 202.0 -(byte~) anim::$6 202.0 -(byte~) anim::$7 202.0 +(byte~) anim::$2 101.0 +(byte~) anim::$3 202.0 +(byte~) anim::$5 202.0 (byte) anim::j (byte) anim::j#1 151.5 -(byte) anim::j#2 10.1 +(byte) anim::j#2 11.222222222222221 (byte) anim::j2 (byte) anim::j2#1 202.0 (byte) anim::j2#2 67.33333333333333 -(byte) anim::j2#3 22.444444444444443 +(byte) anim::j2#3 25.25 (word) anim::x (word) anim::x#0 75.75 (byte) anim::x_msb -(byte) anim::x_msb#1 12.0 -(byte) anim::x_msb#2 67.33333333333333 +(byte) anim::x_msb#1 12.75 +(byte) anim::x_msb#2 101.0 (byte) anim::xidx (byte) anim::xidx#0 2.0 (byte) anim::xidx#1 202.0 (byte) anim::xidx#2 202.0 -(byte) anim::xidx#3 30.5 +(byte) anim::xidx#3 38.125 (byte) anim::xidx#5 33.666666666666664 (byte) anim::yidx (byte) anim::yidx#0 4.0 (byte) anim::yidx#1 202.0 (byte) anim::yidx#2 202.0 -(byte) anim::yidx#3 21.78571428571429 +(byte) anim::yidx#3 25.416666666666664 (byte) anim::yidx#6 60.599999999999994 (void()) clear_screen() (byte*) clear_screen::sc @@ -19320,8 +19138,8 @@ VARIABLE REGISTER WEIGHTS (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) (word~) gen_chargen_sprite::$0 4.0 (word~) gen_chargen_sprite::$1 4.0 -(byte~) gen_chargen_sprite::$4 2002.0 -(byte~) gen_chargen_sprite::$7 20002.0 +(byte~) gen_chargen_sprite::$3 2002.0 +(byte~) gen_chargen_sprite::$6 20002.0 (byte) gen_chargen_sprite::b (byte) gen_chargen_sprite::b#1 15001.5 (byte) gen_chargen_sprite::b#2 2000.2 @@ -19430,15 +19248,13 @@ VARIABLE REGISTER WEIGHTS (byte*) prepareMEM::mem#5 4.666666666666666 (byte*) progress_cursor (byte*) progress_cursor#10 4.0 -(byte*) progress_cursor#11 2.4285714285714284 -(byte*) progress_cursor#34 0.7037037037037037 +(byte*) progress_cursor#11 2.8333333333333335 +(byte*) progress_cursor#34 0.7307692307692306 (byte) progress_idx (byte) progress_idx#10 3.0 -(byte) progress_idx#12 2.142857142857143 +(byte) progress_idx#12 2.5 (byte) progress_idx#34 0.5652173913043479 (void()) progress_inc() -(byte~) progress_inc::$2 4.0 -(byte~) progress_inc::$3 4.0 (byte[]) progress_inc::progress_chars (void()) progress_init((byte*) progress_init::line) (byte*) progress_init::line @@ -19457,11 +19273,11 @@ VARIABLE REGISTER WEIGHTS (void()) sinFAC() (byte) sin_idx_x (byte) sin_idx_x#11 1.4444444444444446 -(byte) sin_idx_x#13 0.5172413793103449 +(byte) sin_idx_x#13 0.5555555555555556 (byte) sin_idx_x#3 2.0 (byte) sin_idx_y (byte) sin_idx_y#11 2.6 -(byte) sin_idx_y#13 0.45454545454545453 +(byte) sin_idx_y#13 0.4838709677419355 (byte) sin_idx_y#3 2.0 (byte) sinlen_x (byte) sinlen_y @@ -19508,18 +19324,14 @@ Initial phi equivalence classes [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] [ place_sprites::j2#3 place_sprites::j2#2 ] [ place_sprites::col#2 place_sprites::col#1 ] -Added variable anim::$1 to zero page equivalence class [ anim::$1 ] Added variable anim::x#0 to zero page equivalence class [ anim::x#0 ] +Added variable anim::$2 to zero page equivalence class [ anim::$2 ] Added variable anim::$3 to zero page equivalence class [ anim::$3 ] -Added variable anim::$4 to zero page equivalence class [ anim::$4 ] -Added variable anim::$6 to zero page equivalence class [ anim::$6 ] -Added variable anim::$7 to zero page equivalence class [ anim::$7 ] +Added variable anim::$5 to zero page equivalence class [ anim::$5 ] Added variable anim::j2#1 to zero page equivalence class [ anim::j2#1 ] Added variable getFAC::return#2 to zero page equivalence class [ getFAC::return#2 ] Added variable gen_sintab::$23 to zero page equivalence class [ gen_sintab::$23 ] Added variable gen_sintab::$24 to zero page equivalence class [ gen_sintab::$24 ] -Added variable progress_inc::$2 to zero page equivalence class [ progress_inc::$2 ] -Added variable progress_inc::$3 to zero page equivalence class [ progress_inc::$3 ] Added variable getFAC::return#0 to zero page equivalence class [ getFAC::return#0 ] Added variable prepareMEM::$0 to zero page equivalence class [ prepareMEM::$0 ] Added variable prepareMEM::$1 to zero page equivalence class [ prepareMEM::$1 ] @@ -19527,8 +19339,8 @@ Added variable gen_chargen_sprite::ch#0 to zero page equivalence class [ gen_cha Added variable gen_chargen_sprite::$0 to zero page equivalence class [ gen_chargen_sprite::$0 ] Added variable gen_chargen_sprite::$1 to zero page equivalence class [ gen_chargen_sprite::$1 ] Added variable gen_chargen_sprite::chargen#0 to zero page equivalence class [ gen_chargen_sprite::chargen#0 ] -Added variable gen_chargen_sprite::$4 to zero page equivalence class [ gen_chargen_sprite::$4 ] -Added variable gen_chargen_sprite::$7 to zero page equivalence class [ gen_chargen_sprite::$7 ] +Added variable gen_chargen_sprite::$3 to zero page equivalence class [ gen_chargen_sprite::$3 ] +Added variable gen_chargen_sprite::$6 to zero page equivalence class [ gen_chargen_sprite::$6 ] Added variable place_sprites::j2#1 to zero page equivalence class [ place_sprites::j2#1 ] Complete equivalence classes [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] @@ -19568,18 +19380,14 @@ Complete equivalence classes [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] [ place_sprites::j2#3 place_sprites::j2#2 ] [ place_sprites::col#2 place_sprites::col#1 ] -[ anim::$1 ] [ anim::x#0 ] +[ anim::$2 ] [ anim::$3 ] -[ anim::$4 ] -[ anim::$6 ] -[ anim::$7 ] +[ anim::$5 ] [ anim::j2#1 ] [ getFAC::return#2 ] [ gen_sintab::$23 ] [ gen_sintab::$24 ] -[ progress_inc::$2 ] -[ progress_inc::$3 ] [ getFAC::return#0 ] [ prepareMEM::$0 ] [ prepareMEM::$1 ] @@ -19587,8 +19395,8 @@ Complete equivalence classes [ gen_chargen_sprite::$0 ] [ gen_chargen_sprite::$1 ] [ gen_chargen_sprite::chargen#0 ] -[ gen_chargen_sprite::$4 ] -[ gen_chargen_sprite::$7 ] +[ gen_chargen_sprite::$3 ] +[ gen_chargen_sprite::$6 ] [ place_sprites::j2#1 ] Allocated zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Allocated zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] @@ -19627,28 +19435,24 @@ Allocated zp ZP_BYTE:46 [ place_sprites::j#2 place_sprites::j#1 ] Allocated zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Allocated zp ZP_BYTE:48 [ place_sprites::j2#3 place_sprites::j2#2 ] Allocated zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] -Allocated zp ZP_BYTE:50 [ anim::$1 ] -Allocated zp ZP_WORD:51 [ anim::x#0 ] +Allocated zp ZP_WORD:50 [ anim::x#0 ] +Allocated zp ZP_BYTE:52 [ anim::$2 ] Allocated zp ZP_BYTE:53 [ anim::$3 ] -Allocated zp ZP_BYTE:54 [ anim::$4 ] -Allocated zp ZP_BYTE:55 [ anim::$6 ] -Allocated zp ZP_BYTE:56 [ anim::$7 ] -Allocated zp ZP_BYTE:57 [ anim::j2#1 ] -Allocated zp ZP_WORD:58 [ getFAC::return#2 ] -Allocated zp ZP_WORD:60 [ gen_sintab::$23 ] -Allocated zp ZP_BYTE:62 [ gen_sintab::$24 ] -Allocated zp ZP_BYTE:63 [ progress_inc::$2 ] -Allocated zp ZP_BYTE:64 [ progress_inc::$3 ] -Allocated zp ZP_WORD:65 [ getFAC::return#0 ] -Allocated zp ZP_BYTE:67 [ prepareMEM::$0 ] -Allocated zp ZP_BYTE:68 [ prepareMEM::$1 ] -Allocated zp ZP_BYTE:69 [ gen_chargen_sprite::ch#0 ] -Allocated zp ZP_WORD:70 [ gen_chargen_sprite::$0 ] -Allocated zp ZP_WORD:72 [ gen_chargen_sprite::$1 ] -Allocated zp ZP_WORD:74 [ gen_chargen_sprite::chargen#0 ] -Allocated zp ZP_BYTE:76 [ gen_chargen_sprite::$4 ] -Allocated zp ZP_BYTE:77 [ gen_chargen_sprite::$7 ] -Allocated zp ZP_BYTE:78 [ place_sprites::j2#1 ] +Allocated zp ZP_BYTE:54 [ anim::$5 ] +Allocated zp ZP_BYTE:55 [ anim::j2#1 ] +Allocated zp ZP_WORD:56 [ getFAC::return#2 ] +Allocated zp ZP_WORD:58 [ gen_sintab::$23 ] +Allocated zp ZP_BYTE:60 [ gen_sintab::$24 ] +Allocated zp ZP_WORD:61 [ getFAC::return#0 ] +Allocated zp ZP_BYTE:63 [ prepareMEM::$0 ] +Allocated zp ZP_BYTE:64 [ prepareMEM::$1 ] +Allocated zp ZP_BYTE:65 [ gen_chargen_sprite::ch#0 ] +Allocated zp ZP_WORD:66 [ gen_chargen_sprite::$0 ] +Allocated zp ZP_WORD:68 [ gen_chargen_sprite::$1 ] +Allocated zp ZP_WORD:70 [ gen_chargen_sprite::chargen#0 ] +Allocated zp ZP_BYTE:72 [ gen_chargen_sprite::$3 ] +Allocated zp ZP_BYTE:73 [ gen_chargen_sprite::$6 ] +Allocated zp ZP_BYTE:74 [ place_sprites::j2#1 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -19698,7 +19502,7 @@ bend: //SEG9 main main: { //SEG10 [5] call init param-assignment [ ] ( main:2 [ ] ) - //SEG11 [48] phi from main to init [phi:main->init] + //SEG11 [46] phi from main to init [phi:main->init] init_from_main: jsr init //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] @@ -19744,16 +19548,14 @@ main: { } //SEG28 anim anim: { - .label _1 = $32 + .label _2 = $34 .label _3 = $35 - .label _4 = $36 - .label _6 = $37 - .label _7 = $38 + .label _5 = $36 .label xidx = 4 .label yidx = 7 - .label x = $33 + .label x = $32 .label x_msb = 5 - .label j2 = $39 + .label j2 = $37 .label j2_2 = 6 .label j = 8 .label j2_3 = 6 @@ -19789,331 +19591,325 @@ anim: { jmp b1 //SEG44 anim::@1 b1: - //SEG45 [16] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG45 [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) -- vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 ldx xidx lda sintab_x,x - sta _1 - //SEG46 [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) -- vwuz1=vwuc1_plus_vbuz2 - lda _1 clc adc #<$1e sta x lda #>$1e adc #0 sta x+1 - //SEG47 [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) -- vbuz1=vbuz2_rol_1 + //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuz1=vbuz2_rol_1 lda x_msb asl - sta _3 - //SEG48 [19] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ) -- vbuz1=_hi_vwuz2 + sta _2 + //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) -- vbuz1=_hi_vwuz2 lda x+1 - sta _4 - //SEG49 [20] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz2_bor_vbuz3 - lda _3 - ora _4 + sta _3 + //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _2 + ora _3 sta x_msb - //SEG50 [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) -- vbuz1=_lo_vwuz2 + //SEG49 [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) -- vbuz1=_lo_vwuz2 lda x - sta _6 - //SEG51 [22] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _6 + sta _5 + //SEG50 [21] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + lda _5 ldx j2_3 sta SPRITES_XPOS,x - //SEG52 [23] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG51 [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldx yidx lda sintab_y,x - sta _7 - //SEG53 [24] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 - lda _7 ldx j2_3 sta SPRITES_YPOS,x - //SEG54 [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG52 [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda xidx clc adc #$a sta xidx - //SEG55 [26] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG53 [24] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda xidx cmp #sinlen_x bcc b2_from_b1 jmp b6 - //SEG56 anim::@6 + //SEG54 anim::@6 b6: - //SEG57 [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 + //SEG55 [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 lda xidx sec sbc #sinlen_x sta xidx - //SEG58 [28] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] + //SEG56 [26] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] b2_from_b1: b2_from_b6: - //SEG59 [28] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy + //SEG57 [26] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy jmp b2 - //SEG60 anim::@2 + //SEG58 anim::@2 b2: - //SEG61 [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG59 [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda yidx clc adc #8 sta yidx - //SEG62 [30] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG60 [28] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda yidx cmp #sinlen_y bcc b3_from_b2 jmp b7 - //SEG63 anim::@7 + //SEG61 anim::@7 b7: - //SEG64 [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 + //SEG62 [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 lda yidx sec sbc #sinlen_y sta yidx - //SEG65 [32] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] + //SEG63 [30] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] b3_from_b2: b3_from_b7: - //SEG66 [32] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy + //SEG64 [30] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy jmp b3 - //SEG67 anim::@3 + //SEG65 anim::@3 b3: - //SEG68 [33] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) -- vbuz1=_dec_vbuz2 + //SEG66 [31] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) -- vbuz1=_dec_vbuz2 lda j2_3 sta j2 dec j2 - //SEG69 [34] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) -- vbuz1=_dec_vbuz2 + //SEG67 [32] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) -- vbuz1=_dec_vbuz2 lda j2 sta j2_2 dec j2_2 - //SEG70 [35] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG68 [33] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j - //SEG71 [36] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG69 [34] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1_from_b3 jmp b8 - //SEG72 anim::@8 + //SEG70 anim::@8 b8: - //SEG73 [37] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=vbuz1 + //SEG71 [35] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=vbuz1 lda x_msb sta SPRITES_XMSB - //SEG74 [38] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1=_inc_vbuz1 + //SEG72 [36] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1=_inc_vbuz1 inc sin_idx_x - //SEG75 [39] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG73 [37] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_x cmp #sinlen_x bcc b14_from_b8 - //SEG76 [40] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] + //SEG74 [38] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] b4_from_b8: - //SEG77 [40] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 + //SEG75 [38] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_x jmp b4 - //SEG78 anim::@4 + //SEG76 anim::@4 b4: - //SEG79 [41] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1=_inc_vbuz1 + //SEG77 [39] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1=_inc_vbuz1 inc sin_idx_y - //SEG80 [42] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG78 [40] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_y cmp #sinlen_y bcc b15_from_b4 - //SEG81 [43] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] + //SEG79 [41] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] b5_from_b4: - //SEG82 [43] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 + //SEG80 [41] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y jmp b5 - //SEG83 anim::@5 + //SEG81 anim::@5 b5: - //SEG84 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG82 [42] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp breturn - //SEG85 anim::@return + //SEG83 anim::@return breturn: - //SEG86 [45] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + //SEG84 [43] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) rts - //SEG87 [46] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] + //SEG85 [44] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] b15_from_b4: jmp b15 - //SEG88 anim::@15 + //SEG86 anim::@15 b15: - //SEG89 [43] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] + //SEG87 [41] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] b5_from_b15: - //SEG90 [43] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy + //SEG88 [41] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy jmp b5 - //SEG91 [47] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] + //SEG89 [45] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] b14_from_b8: jmp b14 - //SEG92 anim::@14 + //SEG90 anim::@14 b14: - //SEG93 [40] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] + //SEG91 [38] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] b4_from_b14: - //SEG94 [40] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy + //SEG92 [38] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy jmp b4 } -//SEG95 init +//SEG93 init init: { .label i = 9 - //SEG96 [49] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG97 [70] phi from init to clear_screen [phi:init->clear_screen] + //SEG94 [47] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG95 [68] phi from init to clear_screen [phi:init->clear_screen] clear_screen_from_init: jsr clear_screen - //SEG98 [50] phi from init to init::@1 [phi:init->init::@1] + //SEG96 [48] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG99 [50] phi (byte) init::i#2 = (byte/signed byte/word/signed word) 0 [phi:init->init::@1#0] -- vbuz1=vbuc1 + //SEG97 [48] phi (byte) init::i#2 = (byte/signed byte/word/signed word) 0 [phi:init->init::@1#0] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG100 [50] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG98 [48] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG101 [50] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG99 [48] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG102 init::@1 + //SEG100 init::@1 b1: - //SEG103 [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG101 [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 lda #0 ldx i sta COLS,x - //SEG104 [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG102 [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 lda #$b ldx i sta COLS+$28,x - //SEG105 [53] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG103 [51] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG106 [54] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG104 [52] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #$28 bne b1_from_b1 - //SEG107 [55] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG105 [53] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: jmp b2 - //SEG108 init::@2 + //SEG106 init::@2 b2: - //SEG109 [56] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG107 [54] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) jsr place_sprites - //SEG110 [57] phi from init::@2 to init::@4 [phi:init::@2->init::@4] + //SEG108 [55] phi from init::@2 to init::@4 [phi:init::@2->init::@4] b4_from_b2: jmp b4 - //SEG111 init::@4 + //SEG109 init::@4 b4: - //SEG112 [58] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG113 [178] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] + //SEG110 [56] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG111 [174] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] gen_sprites_from_b4: jsr gen_sprites - //SEG114 [59] phi from init::@4 to init::@5 [phi:init::@4->init::@5] + //SEG112 [57] phi from init::@4 to init::@5 [phi:init::@4->init::@5] b5_from_b4: jmp b5 - //SEG115 init::@5 + //SEG113 init::@5 b5: - //SEG116 [60] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - //SEG117 [176] phi from init::@5 to progress_init [phi:init::@5->progress_init] + //SEG114 [58] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + //SEG115 [172] phi from init::@5 to progress_init [phi:init::@5->progress_init] progress_init_from_b5: - //SEG118 [176] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 + //SEG116 [172] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN sta progress_init.line+1 jsr progress_init - //SEG119 [61] phi from init::@5 to init::@6 [phi:init::@5->init::@6] + //SEG117 [59] phi from init::@5 to init::@6 [phi:init::@5->init::@6] b6_from_b5: jmp b6 - //SEG120 init::@6 + //SEG118 init::@6 b6: - //SEG121 [62] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG122 [76] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] + //SEG119 [60] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG120 [74] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] gen_sintab_from_b6: - //SEG123 [76] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 + //SEG121 [74] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_x sta gen_sintab.sintab+1 - //SEG124 [76] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 + //SEG122 [74] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_x sta gen_sintab.length - //SEG125 [76] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 + //SEG123 [74] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG126 [76] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuz1=vbuc1 + //SEG124 [74] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuz1=vbuc1 lda #$ff sta gen_sintab.max jsr gen_sintab - //SEG127 [63] phi from init::@6 to init::@7 [phi:init::@6->init::@7] + //SEG125 [61] phi from init::@6 to init::@7 [phi:init::@6->init::@7] b7_from_b6: jmp b7 - //SEG128 init::@7 + //SEG126 init::@7 b7: - //SEG129 [64] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - //SEG130 [176] phi from init::@7 to progress_init [phi:init::@7->progress_init] + //SEG127 [62] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + //SEG128 [172] phi from init::@7 to progress_init [phi:init::@7->progress_init] progress_init_from_b7: - //SEG131 [176] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 + //SEG129 [172] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN+$28 sta progress_init.line+1 jsr progress_init - //SEG132 [65] phi from init::@7 to init::@8 [phi:init::@7->init::@8] + //SEG130 [63] phi from init::@7 to init::@8 [phi:init::@7->init::@8] b8_from_b7: jmp b8 - //SEG133 init::@8 + //SEG131 init::@8 b8: - //SEG134 [66] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG135 [76] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] + //SEG132 [64] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG133 [74] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] gen_sintab_from_b8: - //SEG136 [76] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 + //SEG134 [74] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_y sta gen_sintab.sintab+1 - //SEG137 [76] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 + //SEG135 [74] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_y sta gen_sintab.length - //SEG138 [76] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 + //SEG136 [74] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG139 [76] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuz1=vbuc1 + //SEG137 [74] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuz1=vbuc1 lda #$d0 sta gen_sintab.max jsr gen_sintab - //SEG140 [67] phi from init::@8 to init::@9 [phi:init::@8->init::@9] + //SEG138 [65] phi from init::@8 to init::@9 [phi:init::@8->init::@9] b9_from_b8: jmp b9 - //SEG141 init::@9 + //SEG139 init::@9 b9: - //SEG142 [68] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG143 [70] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] + //SEG140 [66] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG141 [68] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] clear_screen_from_b9: jsr clear_screen jmp breturn - //SEG144 init::@return + //SEG142 init::@return breturn: - //SEG145 [69] return [ ] ( main:2::init:5 [ ] ) + //SEG143 [67] return [ ] ( main:2::init:5 [ ] ) rts } -//SEG146 clear_screen +//SEG144 clear_screen clear_screen: { .label sc = $a - //SEG147 [71] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] + //SEG145 [69] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] b1_from_clear_screen: - //SEG148 [71] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 + //SEG146 [69] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG149 [71] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] + //SEG147 [69] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] b1_from_b1: - //SEG150 [71] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy + //SEG148 [69] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy jmp b1 - //SEG151 clear_screen::@1 + //SEG149 clear_screen::@1 b1: - //SEG152 [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG150 [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #' ' sta (sc),y - //SEG153 [73] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG151 [71] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG154 [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG152 [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -20123,627 +19919,619 @@ clear_screen: { bcc b1_from_b1 !: jmp breturn - //SEG155 clear_screen::@return + //SEG153 clear_screen::@return breturn: - //SEG156 [75] return [ ] ( main:2::init:5::clear_screen:49 [ ] main:2::init:5::clear_screen:68 [ ] ) + //SEG154 [73] return [ ] ( main:2::init:5::clear_screen:47 [ ] main:2::init:5::clear_screen:66 [ ] ) rts } -//SEG157 gen_sintab +//SEG155 gen_sintab gen_sintab: { .const f_2pi = $e2e5 - .label _23 = $3c - .label _24 = $3e + .label _23 = $3a + .label _24 = $3c .label i = $11 .label max = $c .label min = $d .label length = $e .label sintab = $f - //SEG158 [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 + //SEG156 [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 lda max sta setFAC.w lda #0 sta setFAC.w+1 - //SEG159 [78] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG160 [162] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] + //SEG157 [76] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG158 [158] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] setFAC_from_gen_sintab: - //SEG161 [162] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy + //SEG159 [158] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy jsr setFAC - //SEG162 [79] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] + //SEG160 [77] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] b3_from_gen_sintab: jmp b3 - //SEG163 gen_sintab::@3 + //SEG161 gen_sintab::@3 b3: - //SEG164 [80] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG162 [78] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) jsr setARGtoFAC jmp b4 - //SEG165 gen_sintab::@4 + //SEG163 gen_sintab::@4 b4: - //SEG166 asm { lda#0ldx#0ldy#0 } + //SEG164 asm { lda#0ldx#0ldy#0 } lda #0 ldx #0 ldy #0 - //SEG167 [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 + //SEG165 [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 lda min sta setFAC.w lda #0 sta setFAC.w+1 - //SEG168 [83] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG169 [162] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] + //SEG166 [81] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG167 [158] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] setFAC_from_b4: - //SEG170 [162] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy + //SEG168 [158] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy jsr setFAC - //SEG171 [84] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] + //SEG169 [82] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] b5_from_b4: jmp b5 - //SEG172 gen_sintab::@5 + //SEG170 gen_sintab::@5 b5: - //SEG173 [85] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG174 [167] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] + //SEG171 [83] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG172 [163] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] setMEMtoFAC_from_b5: - //SEG175 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG173 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG176 [86] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] + //SEG174 [84] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] b6_from_b5: jmp b6 - //SEG177 gen_sintab::@6 + //SEG175 gen_sintab::@6 b6: - //SEG178 [87] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG176 [85] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) jsr subFACfromARG - //SEG179 [88] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] + //SEG177 [86] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] b7_from_b6: jmp b7 - //SEG180 gen_sintab::@7 + //SEG178 gen_sintab::@7 b7: - //SEG181 [89] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG182 [167] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] + //SEG179 [87] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG180 [163] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] setMEMtoFAC_from_b7: - //SEG183 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG181 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG184 [90] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] + //SEG182 [88] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] b8_from_b7: jmp b8 - //SEG185 gen_sintab::@8 + //SEG183 gen_sintab::@8 b8: - //SEG186 [91] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG187 [162] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] + //SEG184 [89] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG185 [158] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] setFAC_from_b8: - //SEG188 [162] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG186 [158] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 lda #2 sta setFAC.w lda #0 sta setFAC.w+1 jsr setFAC - //SEG189 [92] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] + //SEG187 [90] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] b9_from_b8: jmp b9 - //SEG190 gen_sintab::@9 + //SEG188 gen_sintab::@9 b9: - //SEG191 [93] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG192 [157] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] + //SEG189 [91] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG190 [153] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] divMEMbyFAC_from_b9: - //SEG193 [157] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG191 [153] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_amp sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG194 [94] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] + //SEG192 [92] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] b10_from_b9: jmp b10 - //SEG195 gen_sintab::@10 + //SEG193 gen_sintab::@10 b10: - //SEG196 [95] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG197 [167] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] + //SEG194 [93] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG195 [163] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] setMEMtoFAC_from_b10: - //SEG198 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG196 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG199 [96] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] + //SEG197 [94] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] b11_from_b10: jmp b11 - //SEG200 gen_sintab::@11 + //SEG198 gen_sintab::@11 b11: - //SEG201 [97] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG202 [139] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] + //SEG199 [95] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG200 [135] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] addMEMtoFAC_from_b11: - //SEG203 [139] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@11->addMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG201 [135] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@11->addMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta addMEMtoFAC.mem+1 jsr addMEMtoFAC - //SEG204 [98] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] + //SEG202 [96] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] b12_from_b11: jmp b12 - //SEG205 gen_sintab::@12 + //SEG203 gen_sintab::@12 b12: - //SEG206 [99] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG207 [167] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] + //SEG204 [97] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG205 [163] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] setMEMtoFAC_from_b12: - //SEG208 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG206 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG209 [100] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] + //SEG207 [98] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] b1_from_b12: - //SEG210 [100] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy - //SEG211 [100] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 + //SEG208 [98] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy + //SEG209 [98] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG212 [100] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 + //SEG210 [98] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG213 [100] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] + //SEG211 [98] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] b1_from_b23: - //SEG214 [100] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy - //SEG215 [100] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy - //SEG216 [100] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy + //SEG212 [98] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy + //SEG213 [98] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy + //SEG214 [98] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy jmp b1 - //SEG217 gen_sintab::@1 + //SEG215 gen_sintab::@1 b1: - //SEG218 [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) -- vwuz1=_word_vbuz2 + //SEG216 [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG219 [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG220 [162] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] + //SEG217 [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG218 [158] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] setFAC_from_b1: - //SEG221 [162] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy + //SEG219 [158] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy jsr setFAC - //SEG222 [103] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] + //SEG220 [101] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] b14_from_b1: jmp b14 - //SEG223 gen_sintab::@14 + //SEG221 gen_sintab::@14 b14: - //SEG224 [104] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG225 [150] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] + //SEG222 [102] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG223 [146] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] mulFACbyMEM_from_b14: - //SEG226 [150] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG224 [146] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG227 [105] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] + //SEG225 [103] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] b15_from_b14: jmp b15 - //SEG228 gen_sintab::@15 + //SEG226 gen_sintab::@15 b15: - //SEG229 [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG230 [167] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] + //SEG227 [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG228 [163] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] setMEMtoFAC_from_b15: - //SEG231 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG229 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC jmp b16 - //SEG232 gen_sintab::@16 + //SEG230 gen_sintab::@16 b16: - //SEG233 [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) -- vwuz1=_word_vbuz2 + //SEG231 [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) -- vwuz1=_word_vbuz2 lda length sta setFAC.w lda #0 sta setFAC.w+1 - //SEG234 [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG235 [162] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] + //SEG232 [106] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG233 [158] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] setFAC_from_b16: - //SEG236 [162] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy + //SEG234 [158] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy jsr setFAC - //SEG237 [109] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] + //SEG235 [107] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] b17_from_b16: jmp b17 - //SEG238 gen_sintab::@17 + //SEG236 gen_sintab::@17 b17: - //SEG239 [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG240 [157] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] + //SEG237 [108] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG238 [153] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] divMEMbyFAC_from_b17: - //SEG241 [157] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG239 [153] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_i sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG242 [111] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] + //SEG240 [109] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] b18_from_b17: jmp b18 - //SEG243 gen_sintab::@18 + //SEG241 gen_sintab::@18 b18: - //SEG244 [112] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG242 [110] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) jsr sinFAC - //SEG245 [113] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] + //SEG243 [111] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] b19_from_b18: jmp b19 - //SEG246 gen_sintab::@19 + //SEG244 gen_sintab::@19 b19: - //SEG247 [114] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG248 [150] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] + //SEG245 [112] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG246 [146] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] mulFACbyMEM_from_b19: - //SEG249 [150] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG247 [146] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_amp sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG250 [115] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] + //SEG248 [113] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] b20_from_b19: jmp b20 - //SEG251 gen_sintab::@20 + //SEG249 gen_sintab::@20 b20: - //SEG252 [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG253 [139] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] + //SEG250 [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG251 [135] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] addMEMtoFAC_from_b20: - //SEG254 [139] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@20->addMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG252 [135] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@20->addMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta addMEMtoFAC.mem+1 jsr addMEMtoFAC - //SEG255 [117] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] + //SEG253 [115] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] b21_from_b20: jmp b21 - //SEG256 gen_sintab::@21 + //SEG254 gen_sintab::@21 b21: - //SEG257 [118] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + //SEG255 [116] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) jsr getFAC - //SEG258 [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) -- vwuz1=vwuz2 + //SEG256 [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) -- vwuz1=vwuz2 lda getFAC.return sta getFAC.return_2 lda getFAC.return+1 sta getFAC.return_2+1 jmp b22 - //SEG259 gen_sintab::@22 + //SEG257 gen_sintab::@22 b22: - //SEG260 [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) -- vwuz1=vwuz2 + //SEG258 [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) -- vwuz1=vwuz2 lda getFAC.return_2 sta _23 lda getFAC.return_2+1 sta _23+1 - //SEG261 [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuz1=_byte_vwuz2 + //SEG259 [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuz1=_byte_vwuz2 lda _23 sta _24 - //SEG262 [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG260 [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuz3 lda _24 ldy i sta (sintab),y - //SEG263 [123] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + //SEG261 [121] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) jsr progress_inc jmp b23 - //SEG264 gen_sintab::@23 + //SEG262 gen_sintab::@23 b23: - //SEG265 [124] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1=_inc_vbuz1 + //SEG263 [122] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG266 [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1_lt_vbuz2_then_la1 + //SEG264 [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1_lt_vbuz2_then_la1 lda i cmp length bcc b1_from_b23 jmp breturn - //SEG267 gen_sintab::@return + //SEG265 gen_sintab::@return breturn: - //SEG268 [126] return [ ] ( main:2::init:5::gen_sintab:62 [ ] main:2::init:5::gen_sintab:66 [ ] ) + //SEG266 [124] return [ ] ( main:2::init:5::gen_sintab:60 [ ] main:2::init:5::gen_sintab:64 [ ] ) rts f_i: .byte 0, 0, 0, 0, 0 f_min: .byte 0, 0, 0, 0, 0 f_amp: .byte 0, 0, 0, 0, 0 } -//SEG269 progress_inc +//SEG267 progress_inc progress_inc: { - .label _2 = $3f - .label _3 = $40 - //SEG270 [127] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1=_inc_vbuz1 + //SEG268 [125] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1=_inc_vbuz1 inc progress_idx - //SEG271 [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG269 [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1_neq_vbuc1_then_la1 lda progress_idx cmp #8 bne b1_from_progress_inc jmp b2 - //SEG272 progress_inc::@2 + //SEG270 progress_inc::@2 b2: - //SEG273 [129] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] ) -- vbuz1=_deref_pbuc1 + //SEG271 [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 - sta _2 - //SEG274 [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) -- _deref_pbuz1=vbuz2 ldy #0 - lda _2 sta (progress_cursor),y - //SEG275 [131] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) -- pbuz1=_inc_pbuz1 + //SEG272 [128] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) -- pbuz1=_inc_pbuz1 inc progress_cursor bne !+ inc progress_cursor+1 !: - //SEG276 [132] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + //SEG273 [129] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] b1_from_b2: - //SEG277 [132] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - //SEG278 [132] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + //SEG274 [129] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + //SEG275 [129] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx jmp b1 - //SEG279 [132] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + //SEG276 [129] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] b1_from_progress_inc: - //SEG280 [132] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy - //SEG281 [132] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy + //SEG277 [129] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy + //SEG278 [129] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy jmp b1 - //SEG282 progress_inc::@1 + //SEG279 progress_inc::@1 b1: - //SEG283 [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG280 [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx progress_idx lda progress_chars,x - sta _3 - //SEG284 [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) -- _deref_pbuz1=vbuz2 ldy #0 - lda _3 sta (progress_cursor),y jmp breturn - //SEG285 progress_inc::@return + //SEG281 progress_inc::@return breturn: - //SEG286 [135] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + //SEG282 [131] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) rts progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } -//SEG287 getFAC +//SEG283 getFAC getFAC: { - .label return = $41 - .label return_2 = $3a - //SEG288 asm { jsr$b1aasty$festa$ff } + .label return = $3d + .label return_2 = $38 + //SEG284 asm { jsr$b1aasty$festa$ff } jsr $b1aa sty $fe sta $ff - //SEG289 [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG285 [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 jmp breturn - //SEG290 getFAC::@return + //SEG286 getFAC::@return breturn: - //SEG291 [138] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + //SEG287 [134] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) rts } -//SEG292 addMEMtoFAC +//SEG288 addMEMtoFAC addMEMtoFAC: { .label mem = $15 - //SEG293 [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) -- pbuz1=pbuz2 + //SEG289 [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG294 [141] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG295 [144] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG290 [137] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG291 [140] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: - //SEG296 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy + //SEG292 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG297 addMEMtoFAC::@1 + //SEG293 addMEMtoFAC::@1 b1: - //SEG298 asm { lda$feldy$ffjsr$b867 } + //SEG294 asm { lda$feldy$ffjsr$b867 } lda $fe ldy $ff jsr $b867 jmp breturn - //SEG299 addMEMtoFAC::@return + //SEG295 addMEMtoFAC::@return breturn: - //SEG300 [143] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG296 [139] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG301 prepareMEM +//SEG297 prepareMEM prepareMEM: { - .label _0 = $43 - .label _1 = $44 + .label _0 = $3f + .label _1 = $40 .label mem = $17 - //SEG302 [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuz1=_lo_pbuz2 + //SEG298 [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuz1=_lo_pbuz2 lda mem sta _0 - //SEG303 [146] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuz1 + //SEG299 [142] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuz1 lda _0 sta memLo - //SEG304 [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) -- vbuz1=_hi_pbuz2 + //SEG300 [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) -- vbuz1=_hi_pbuz2 lda mem+1 sta _1 - //SEG305 [148] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- _deref_pbuc1=vbuz1 + //SEG301 [144] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- _deref_pbuc1=vbuz1 lda _1 sta memHi jmp breturn - //SEG306 prepareMEM::@return + //SEG302 prepareMEM::@return breturn: - //SEG307 [149] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG303 [145] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG308 mulFACbyMEM +//SEG304 mulFACbyMEM mulFACbyMEM: { .label mem = $19 - //SEG309 [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) -- pbuz1=pbuz2 + //SEG305 [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG310 [152] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG311 [144] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG306 [148] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG307 [140] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: - //SEG312 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG308 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG313 mulFACbyMEM::@1 + //SEG309 mulFACbyMEM::@1 b1: - //SEG314 asm { lda$feldy$ffjsr$ba28 } + //SEG310 asm { lda$feldy$ffjsr$ba28 } lda $fe ldy $ff jsr $ba28 jmp breturn - //SEG315 mulFACbyMEM::@return + //SEG311 mulFACbyMEM::@return breturn: - //SEG316 [154] return [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG312 [150] return [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG317 sinFAC +//SEG313 sinFAC sinFAC: { - //SEG318 asm { jsr$e26b } + //SEG314 asm { jsr$e26b } jsr $e26b jmp breturn - //SEG319 sinFAC::@return + //SEG315 sinFAC::@return breturn: - //SEG320 [156] return [ ] ( main:2::init:5::gen_sintab:62::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG316 [152] return [ ] ( main:2::init:5::gen_sintab:60::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG321 divMEMbyFAC +//SEG317 divMEMbyFAC divMEMbyFAC: { .label mem = $1b - //SEG322 [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) -- pbuz1=pbuz2 + //SEG318 [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG323 [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG324 [144] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG319 [155] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG320 [140] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: - //SEG325 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy + //SEG321 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG326 divMEMbyFAC::@1 + //SEG322 divMEMbyFAC::@1 b1: - //SEG327 asm { lda$feldy$ffjsr$bb0f } + //SEG323 asm { lda$feldy$ffjsr$bb0f } lda $fe ldy $ff jsr $bb0f jmp breturn - //SEG328 divMEMbyFAC::@return + //SEG324 divMEMbyFAC::@return breturn: - //SEG329 [161] return [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG325 [157] return [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG330 setFAC +//SEG326 setFAC setFAC: { .label w = $1d - //SEG331 [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz2 + //SEG327 [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz2 lda w sta prepareMEM.mem lda w+1 sta prepareMEM.mem+1 - //SEG332 [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG333 [144] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG328 [160] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG329 [140] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: - //SEG334 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG330 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG335 setFAC::@1 + //SEG331 setFAC::@1 b1: - //SEG336 asm { ldy$felda$ffjsr$b391 } + //SEG332 asm { ldy$felda$ffjsr$b391 } ldy $fe lda $ff jsr $b391 jmp breturn - //SEG337 setFAC::@return + //SEG333 setFAC::@return breturn: - //SEG338 [166] return [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG334 [162] return [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG339 setMEMtoFAC +//SEG335 setMEMtoFAC setMEMtoFAC: { .label mem = $1f - //SEG340 [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) -- pbuz1=pbuz2 + //SEG336 [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) -- pbuz1=pbuz2 lda mem sta prepareMEM.mem lda mem+1 sta prepareMEM.mem+1 - //SEG341 [169] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG342 [144] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG337 [165] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG338 [140] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: - //SEG343 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG339 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG344 setMEMtoFAC::@1 + //SEG340 setMEMtoFAC::@1 b1: - //SEG345 asm { ldx$feldy$ffjsr$bbd4 } + //SEG341 asm { ldx$feldy$ffjsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 jmp breturn - //SEG346 setMEMtoFAC::@return + //SEG342 setMEMtoFAC::@return breturn: - //SEG347 [171] return [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG343 [167] return [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG348 subFACfromARG +//SEG344 subFACfromARG subFACfromARG: { - //SEG349 asm { jsr$b853 } + //SEG345 asm { jsr$b853 } jsr $b853 jmp breturn - //SEG350 subFACfromARG::@return + //SEG346 subFACfromARG::@return breturn: - //SEG351 [173] return [ ] ( main:2::init:5::gen_sintab:62::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG347 [169] return [ ] ( main:2::init:5::gen_sintab:60::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) rts } -//SEG352 setARGtoFAC +//SEG348 setARGtoFAC setARGtoFAC: { - //SEG353 asm { jsr$bc0f } + //SEG349 asm { jsr$bc0f } jsr $bc0f jmp breturn - //SEG354 setARGtoFAC::@return + //SEG350 setARGtoFAC::@return breturn: - //SEG355 [175] return [ ] ( main:2::init:5::gen_sintab:62::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG351 [171] return [ ] ( main:2::init:5::gen_sintab:60::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) rts } -//SEG356 progress_init +//SEG352 progress_init progress_init: { .label line = $13 jmp breturn - //SEG357 progress_init::@return + //SEG353 progress_init::@return breturn: - //SEG358 [177] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + //SEG354 [173] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) rts } -//SEG359 gen_sprites +//SEG355 gen_sprites gen_sprites: { .label spr = $22 .label i = $21 - //SEG360 [179] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] + //SEG356 [175] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] b1_from_gen_sprites: - //SEG361 [179] phi (byte*) gen_sprites::spr#2 = (const byte[]) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 + //SEG357 [175] phi (byte*) gen_sprites::spr#2 = (const byte[]) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #sprites sta spr+1 - //SEG362 [179] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 + //SEG358 [175] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG363 [179] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] + //SEG359 [175] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] b1_from_b3: - //SEG364 [179] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy - //SEG365 [179] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy + //SEG360 [175] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy + //SEG361 [175] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy jmp b1 - //SEG366 gen_sprites::@1 + //SEG362 gen_sprites::@1 b1: - //SEG367 [180] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG363 [176] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda cml,x sta gen_chargen_sprite.ch - //SEG368 [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 + //SEG364 [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite lda spr+1 sta gen_chargen_sprite.sprite+1 - //SEG369 [182] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + //SEG365 [178] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) jsr gen_chargen_sprite jmp b3 - //SEG370 gen_sprites::@3 + //SEG366 gen_sprites::@3 b3: - //SEG371 [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG367 [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda spr clc adc #$40 @@ -20751,28 +20539,28 @@ gen_sprites: { bcc !+ inc spr+1 !: - //SEG372 [184] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG368 [180] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG373 [185] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG369 [181] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #7 bne b1_from_b3 jmp breturn - //SEG374 gen_sprites::@return + //SEG370 gen_sprites::@return breturn: - //SEG375 [186] return [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + //SEG371 [182] return [ ] ( main:2::init:5::gen_sprites:56 [ ] ) rts cml: .text "camelot" } -//SEG376 gen_chargen_sprite +//SEG372 gen_chargen_sprite gen_chargen_sprite: { - .label _0 = $46 - .label _1 = $48 - .label _4 = $4c - .label _7 = $4d - .label ch = $45 + .label _0 = $42 + .label _1 = $44 + .label _3 = $48 + .label _6 = $49 + .label ch = $41 .label sprite = $2b - .label chargen = $4a + .label chargen = $46 .label bits = $25 .label s_gen = $28 .label s_gen_cnt = $29 @@ -20780,12 +20568,12 @@ gen_chargen_sprite: { .label x = $26 .label y = $24 .label c = $27 - //SEG377 [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuz2 + //SEG373 [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuz2 lda ch sta _0 lda #0 sta _0+1 - //SEG378 [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz2_rol_3 + //SEG374 [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz2_rol_3 lda _1 asl sta _0 @@ -20804,7 +20592,7 @@ gen_chargen_sprite: { lda _1+1 rol sta _0+1 - //SEG379 [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz2 + //SEG375 [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz2 lda #CHARGEN adc _1+1 sta chargen+1 - //SEG380 asm { sei } + //SEG376 asm { sei } sei - //SEG381 [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- _deref_pbuc1=vbuc2 + //SEG377 [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG382 [192] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] + //SEG378 [188] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] b1_from_gen_chargen_sprite: - //SEG383 [192] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy - //SEG384 [192] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 + //SEG379 [188] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy + //SEG380 [188] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG385 [192] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] + //SEG381 [188] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] b1_from_b9: - //SEG386 [192] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy - //SEG387 [192] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy + //SEG382 [188] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy + //SEG383 [188] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy jmp b1 - //SEG388 gen_chargen_sprite::@1 + //SEG384 gen_chargen_sprite::@1 b1: - //SEG389 [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG385 [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG390 [194] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] + //SEG386 [190] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] b2_from_b1: - //SEG391 [194] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 + //SEG387 [190] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG392 [194] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy - //SEG393 [194] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuz1=vbuc1 + //SEG388 [190] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy + //SEG389 [190] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuz1=vbuc1 lda #0 sta s_gen_cnt - //SEG394 [194] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 + //SEG390 [190] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 lda #0 sta s_gen - //SEG395 [194] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy + //SEG391 [190] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG396 [194] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] + //SEG392 [190] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] b2_from_b8: - //SEG397 [194] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy - //SEG398 [194] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy - //SEG399 [194] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy - //SEG400 [194] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy - //SEG401 [194] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy + //SEG393 [190] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy + //SEG394 [190] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy + //SEG395 [190] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy + //SEG396 [190] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy + //SEG397 [190] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG402 gen_chargen_sprite::@2 + //SEG398 gen_chargen_sprite::@2 b2: - //SEG403 [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) -- vbuz1=vbuz2_band_vbuc1 + //SEG399 [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) -- vbuz1=vbuz2_band_vbuc1 lda bits and #$80 - sta _4 - //SEG404 [196] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuz1_eq_0_then_la1 - lda _4 + sta _3 + //SEG400 [192] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuz1_eq_0_then_la1 + lda _3 beq b3_from_b2 - //SEG405 [197] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] + //SEG401 [193] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] b6_from_b2: jmp b6 - //SEG406 gen_chargen_sprite::@6 + //SEG402 gen_chargen_sprite::@6 b6: - //SEG407 [198] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] + //SEG403 [194] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] b3_from_b6: - //SEG408 [198] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG404 [194] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #1 sta c jmp b3 - //SEG409 [198] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] + //SEG405 [194] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] b3_from_b2: - //SEG410 [198] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG406 [194] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG411 gen_chargen_sprite::@3 + //SEG407 gen_chargen_sprite::@3 b3: - //SEG412 [199] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] + //SEG408 [195] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] b4_from_b3: - //SEG413 [199] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy - //SEG414 [199] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuz1=vbuc1 + //SEG409 [195] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy + //SEG410 [195] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuz1=vbuc1 lda #0 sta b - //SEG415 [199] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy - //SEG416 [199] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy + //SEG411 [195] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy + //SEG412 [195] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG417 [199] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] + //SEG413 [195] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] b4_from_b5: - //SEG418 [199] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy - //SEG419 [199] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy - //SEG420 [199] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy - //SEG421 [199] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy + //SEG414 [195] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy + //SEG415 [195] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy + //SEG416 [195] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy + //SEG417 [195] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG422 gen_chargen_sprite::@4 + //SEG418 gen_chargen_sprite::@4 b4: - //SEG423 [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) -- vbuz1=vbuz2_rol_1 + //SEG419 [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) -- vbuz1=vbuz2_rol_1 lda s_gen asl - sta _7 - //SEG424 [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- vbuz1=vbuz2_bor_vbuz3 - lda _7 + sta _6 + //SEG420 [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _6 ora c sta s_gen - //SEG425 [202] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG421 [198] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuz1=_inc_vbuz1 inc s_gen_cnt - //SEG426 [203] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG422 [199] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda s_gen_cnt cmp #8 bne b5_from_b4 jmp b7 - //SEG427 gen_chargen_sprite::@7 + //SEG423 gen_chargen_sprite::@7 b7: - //SEG428 [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG424 [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #0 sta (sprite),y - //SEG429 [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG425 [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #3 sta (sprite),y - //SEG430 [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG426 [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #6 sta (sprite),y - //SEG431 [207] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG427 [203] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) -- pbuz1=_inc_pbuz1 inc sprite bne !+ inc sprite+1 !: - //SEG432 [208] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] + //SEG428 [204] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] b5_from_b7: - //SEG433 [208] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy - //SEG434 [208] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuz1=vbuc1 + //SEG429 [204] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy + //SEG430 [204] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuz1=vbuc1 lda #0 sta s_gen_cnt - //SEG435 [208] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 + //SEG431 [204] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 lda #0 sta s_gen jmp b5 - //SEG436 [208] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] + //SEG432 [204] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] b5_from_b4: - //SEG437 [208] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy - //SEG438 [208] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy - //SEG439 [208] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy + //SEG433 [204] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy + //SEG434 [204] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy + //SEG435 [204] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy jmp b5 - //SEG440 gen_chargen_sprite::@5 + //SEG436 gen_chargen_sprite::@5 b5: - //SEG441 [209] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG437 [205] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuz1=_inc_vbuz1 inc b - //SEG442 [210] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG438 [206] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda b cmp #3 bne b4_from_b5 jmp b8 - //SEG443 gen_chargen_sprite::@8 + //SEG439 gen_chargen_sprite::@8 b8: - //SEG444 [211] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) -- vbuz1=vbuz1_rol_1 + //SEG440 [207] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) -- vbuz1=vbuz1_rol_1 asl bits - //SEG445 [212] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG441 [208] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG446 [213] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG442 [209] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2_from_b8 jmp b9 - //SEG447 gen_chargen_sprite::@9 + //SEG443 gen_chargen_sprite::@9 b9: - //SEG448 [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG444 [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda sprite clc adc #6 @@ -20983,145 +20771,145 @@ gen_chargen_sprite: { bcc !+ inc sprite+1 !: - //SEG449 [215] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG445 [211] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG450 [216] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG446 [212] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1_from_b9 jmp b10 - //SEG451 gen_chargen_sprite::@10 + //SEG447 gen_chargen_sprite::@10 b10: - //SEG452 [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG448 [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG453 asm { cli } + //SEG449 asm { cli } cli jmp breturn - //SEG454 gen_chargen_sprite::@return + //SEG450 gen_chargen_sprite::@return breturn: - //SEG455 [219] return [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + //SEG451 [215] return [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) rts } -//SEG456 place_sprites +//SEG452 place_sprites place_sprites: { .const sprites_ptr = SCREEN+$3f8 .label spr_id = $2d .label spr_x = $2f .label col = $31 - .label j2 = $4e + .label j2 = $4a .label j2_2 = $30 .label j = $2e .label j2_3 = $30 - //SEG457 [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG453 [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE - //SEG458 [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG454 [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_X - //SEG459 [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG455 [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_Y - //SEG460 [223] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] + //SEG456 [219] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] b1_from_place_sprites: - //SEG461 [223] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 + //SEG457 [219] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 lda #5 sta col - //SEG462 [223] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 + //SEG458 [219] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta j2_3 - //SEG463 [223] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 + //SEG459 [219] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 lda #$3c sta spr_x - //SEG464 [223] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 + //SEG460 [219] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuz1=vbuc1 lda #0 sta j - //SEG465 [223] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 + //SEG461 [219] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 lda #$ff & sprites/$40 sta spr_id jmp b1 - //SEG466 [223] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] + //SEG462 [219] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] b1_from_b1: - //SEG467 [223] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy - //SEG468 [223] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy - //SEG469 [223] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy - //SEG470 [223] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy - //SEG471 [223] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy + //SEG463 [219] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy + //SEG464 [219] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy + //SEG465 [219] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy + //SEG466 [219] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy + //SEG467 [219] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy jmp b1 - //SEG472 place_sprites::@1 + //SEG468 place_sprites::@1 b1: - //SEG473 [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG469 [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda spr_id ldx j sta sprites_ptr,x - //SEG474 [225] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG470 [221] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- vbuz1=_inc_vbuz1 inc spr_id - //SEG475 [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG471 [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda spr_x ldx j2_3 sta SPRITES_XPOS,x - //SEG476 [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG472 [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 lda #$50 ldx j2_3 sta SPRITES_YPOS,x - //SEG477 [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG473 [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda col ldx j sta SPRITES_COLS,x - //SEG478 [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG474 [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda spr_x clc adc #$20 sta spr_x - //SEG479 [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) -- vbuz1=vbuz1_bxor_vbuc1 + //SEG475 [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) -- vbuz1=vbuz1_bxor_vbuc1 lda col eor #7^5 sta col - //SEG480 [231] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) -- vbuz1=_inc_vbuz2 + //SEG476 [227] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) -- vbuz1=_inc_vbuz2 lda j2_3 sta j2 inc j2 - //SEG481 [232] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuz1=_inc_vbuz2 + //SEG477 [228] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuz1=_inc_vbuz2 lda j2 sta j2_2 inc j2_2 - //SEG482 [233] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG478 [229] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuz1=_inc_vbuz1 inc j - //SEG483 [234] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG479 [230] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1_from_b1 jmp breturn - //SEG484 place_sprites::@return + //SEG480 place_sprites::@return breturn: - //SEG485 [235] return [ ] ( main:2::init:5::place_sprites:56 [ ] ) + //SEG481 [231] return [ ] ( main:2::init:5::place_sprites:54 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:50 [ anim::$1 ] has ALU potential. -Equivalence Class zp ZP_BYTE:54 [ anim::$4 ] has ALU potential. +Equivalence Class zp ZP_BYTE:53 [ anim::$3 ] has ALU potential. Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] -Statement [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a +Statement [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] -Statement [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) always clobbers reg byte a -Statement [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) always clobbers reg byte a -Statement [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a -Statement [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a -Statement [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a -Statement [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a -Statement [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) always clobbers reg byte a +Statement [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a +Statement [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a +Statement [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a +Statement [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a +Statement [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a +Statement [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ init::i#2 init::i#1 ] -Statement [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) always clobbers reg byte a -Statement [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a +Statement [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) always clobbers reg byte a +Statement [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ gen_sintab::min#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ gen_sintab::length#10 ] Statement asm { lda#0ldx#0ldy#0 } always clobbers reg byte a reg byte x reg byte y @@ -21129,53 +20917,53 @@ Removing always clobbered register reg byte x as potential for zp ZP_BYTE:13 [ g Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ gen_sintab::min#2 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:14 [ gen_sintab::length#10 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ gen_sintab::length#10 ] -Statement [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a -Statement [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) always clobbers reg byte a +Statement [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a +Statement [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -Statement [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) always clobbers reg byte a -Statement [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) always clobbers reg byte a -Statement [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) always clobbers reg byte a -Statement [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) always clobbers reg byte a -Statement [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) always clobbers reg byte y +Statement [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) always clobbers reg byte a +Statement [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) always clobbers reg byte a +Statement [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) always clobbers reg byte a +Statement [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) always clobbers reg byte a +Statement [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] -Statement [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte y +Statement [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -Statement [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) always clobbers reg byte a -Statement [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) always clobbers reg byte a +Statement [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) always clobbers reg byte a +Statement [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$b867 } always clobbers reg byte a reg byte y -Statement [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) always clobbers reg byte a -Statement [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) always clobbers reg byte a -Statement [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) always clobbers reg byte a +Statement [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) always clobbers reg byte a +Statement [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) always clobbers reg byte a +Statement [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$ba28 } always clobbers reg byte a reg byte y -Statement [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) always clobbers reg byte a +Statement [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$bb0f } always clobbers reg byte a reg byte y -Statement [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) always clobbers reg byte a +Statement [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) always clobbers reg byte a Statement asm { ldy$felda$ffjsr$b391 } always clobbers reg byte a reg byte y -Statement [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) always clobbers reg byte a +Statement [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) always clobbers reg byte a Statement asm { ldx$feldy$ffjsr$bbd4 } always clobbers reg byte x reg byte y Removing always clobbered register reg byte x as potential for zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] Removing always clobbered register reg byte x as potential for zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] -Statement [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a +Statement [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:69 [ gen_chargen_sprite::ch#0 ] -Statement [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a -Statement [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a -Statement [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a -Statement [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:65 [ gen_chargen_sprite::ch#0 ] +Statement [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a +Statement [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a +Statement [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a +Statement [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a +Statement [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a +Statement [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] -Statement [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) always clobbers reg byte a +Statement [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] -Statement [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) always clobbers reg byte a +Statement [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] -Statement [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a -Statement [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y +Statement [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a +Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] @@ -21183,85 +20971,85 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:38 [ g Removing always clobbered register reg byte y as potential for zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] -Statement [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y -Statement [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a -Statement [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a -Statement [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) always clobbers reg byte a -Statement [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) always clobbers reg byte a -Statement [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) always clobbers reg byte a -Statement [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a +Statement [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y +Statement [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y +Statement [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a +Statement [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a +Statement [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) always clobbers reg byte a +Statement [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) always clobbers reg byte a +Statement [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) always clobbers reg byte a +Statement [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:46 [ place_sprites::j#2 place_sprites::j#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ place_sprites::j2#3 place_sprites::j2#2 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] -Statement [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a -Statement [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a +Statement [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a +Statement [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a +Statement [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word) 255) goto main::@2 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2 [ sin_idx_x#13 sin_idx_y#13 ] ) always clobbers reg byte a -Statement [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a -Statement [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) always clobbers reg byte a -Statement [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) always clobbers reg byte a -Statement [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a -Statement [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a -Statement [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a -Statement [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a -Statement [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a -Statement [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y -Statement [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) always clobbers reg byte a -Statement [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a +Statement [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) always clobbers reg byte a +Statement [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) always clobbers reg byte a +Statement [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) always clobbers reg byte a +Statement [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) always clobbers reg byte a +Statement [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) always clobbers reg byte a +Statement [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) always clobbers reg byte a +Statement [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) always clobbers reg byte a +Statement [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) always clobbers reg byte a +Statement [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) always clobbers reg byte a +Statement [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) always clobbers reg byte a reg byte y +Statement [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) always clobbers reg byte a +Statement [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) always clobbers reg byte a Statement asm { lda#0ldx#0ldy#0 } always clobbers reg byte a reg byte x reg byte y -Statement [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a -Statement [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) always clobbers reg byte a -Statement [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) always clobbers reg byte a -Statement [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) always clobbers reg byte a -Statement [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) always clobbers reg byte a -Statement [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) always clobbers reg byte a -Statement [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) always clobbers reg byte y -Statement [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a -Statement [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) always clobbers reg byte a -Statement [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) always clobbers reg byte y -Statement [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] ) always clobbers reg byte a reg byte x -Statement [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte y -Statement [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) always clobbers reg byte a -Statement [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) always clobbers reg byte a +Statement [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) always clobbers reg byte a +Statement [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) always clobbers reg byte a +Statement [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) always clobbers reg byte a +Statement [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) always clobbers reg byte a +Statement [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) always clobbers reg byte a +Statement [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) always clobbers reg byte a +Statement [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) always clobbers reg byte y +Statement [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a +Statement [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) always clobbers reg byte a +Statement [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) always clobbers reg byte a reg byte y +Statement [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) always clobbers reg byte a reg byte x reg byte y +Statement [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) always clobbers reg byte a +Statement [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$b867 } always clobbers reg byte a reg byte y -Statement [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) always clobbers reg byte a -Statement [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) always clobbers reg byte a -Statement [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) always clobbers reg byte a +Statement [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) always clobbers reg byte a +Statement [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) always clobbers reg byte a +Statement [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$ba28 } always clobbers reg byte a reg byte y -Statement [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) always clobbers reg byte a +Statement [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) always clobbers reg byte a Statement asm { lda$feldy$ffjsr$bb0f } always clobbers reg byte a reg byte y -Statement [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) always clobbers reg byte a +Statement [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) always clobbers reg byte a Statement asm { ldy$felda$ffjsr$b391 } always clobbers reg byte a reg byte y -Statement [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) always clobbers reg byte a +Statement [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) always clobbers reg byte a Statement asm { ldx$feldy$ffjsr$bbd4 } always clobbers reg byte x reg byte y -Statement [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a -Statement [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a -Statement [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a -Statement [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a -Statement [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a -Statement [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a reg byte y -Statement [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) always clobbers reg byte a -Statement [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) always clobbers reg byte a -Statement [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a -Statement [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y -Statement [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y -Statement [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a -Statement [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a -Statement [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) always clobbers reg byte a -Statement [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) always clobbers reg byte a -Statement [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) always clobbers reg byte a -Statement [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) always clobbers reg byte a -Statement [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a -Statement [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a -Statement [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a +Statement [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) always clobbers reg byte a +Statement [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) always clobbers reg byte a +Statement [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) always clobbers reg byte a +Statement [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) always clobbers reg byte a +Statement [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a +Statement [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) always clobbers reg byte a +Statement [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) always clobbers reg byte a reg byte y +Statement [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) always clobbers reg byte a +Statement [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) always clobbers reg byte a +Statement [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a +Statement [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y +Statement [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) always clobbers reg byte a reg byte y +Statement [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) always clobbers reg byte a reg byte y +Statement [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) always clobbers reg byte a +Statement [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) always clobbers reg byte a +Statement [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) always clobbers reg byte a +Statement [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) always clobbers reg byte a +Statement [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) always clobbers reg byte a +Statement [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) always clobbers reg byte a +Statement [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a +Statement [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a +Statement [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) always clobbers reg byte a +Statement [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) always clobbers reg byte a +Statement [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -21299,42 +21087,37 @@ Potential registers zp ZP_BYTE:46 [ place_sprites::j#2 place_sprites::j#1 ] : zp Potential registers zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] : zp ZP_BYTE:47 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:48 [ place_sprites::j2#3 place_sprites::j2#2 ] : zp ZP_BYTE:48 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] : zp ZP_BYTE:49 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:50 [ anim::$1 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_WORD:51 [ anim::x#0 ] : zp ZP_WORD:51 , -Potential registers zp ZP_BYTE:53 [ anim::$3 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:54 [ anim::$4 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:55 [ anim::$6 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:56 [ anim::$7 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:57 [ anim::j2#1 ] : zp ZP_BYTE:57 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:58 [ getFAC::return#2 ] : zp ZP_WORD:58 , -Potential registers zp ZP_WORD:60 [ gen_sintab::$23 ] : zp ZP_WORD:60 , -Potential registers zp ZP_BYTE:62 [ gen_sintab::$24 ] : zp ZP_BYTE:62 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:63 [ progress_inc::$2 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:64 [ progress_inc::$3 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_WORD:65 [ getFAC::return#0 ] : zp ZP_WORD:65 , -Potential registers zp ZP_BYTE:67 [ prepareMEM::$0 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:68 [ prepareMEM::$1 ] : zp ZP_BYTE:68 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:69 [ gen_chargen_sprite::ch#0 ] : zp ZP_BYTE:69 , reg byte x , reg byte y , -Potential registers zp ZP_WORD:70 [ gen_chargen_sprite::$0 ] : zp ZP_WORD:70 , -Potential registers zp ZP_WORD:72 [ gen_chargen_sprite::$1 ] : zp ZP_WORD:72 , -Potential registers zp ZP_WORD:74 [ gen_chargen_sprite::chargen#0 ] : zp ZP_WORD:74 , -Potential registers zp ZP_BYTE:76 [ gen_chargen_sprite::$4 ] : zp ZP_BYTE:76 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:77 [ gen_chargen_sprite::$7 ] : zp ZP_BYTE:77 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:78 [ place_sprites::j2#1 ] : zp ZP_BYTE:78 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:50 [ anim::x#0 ] : zp ZP_WORD:50 , +Potential registers zp ZP_BYTE:52 [ anim::$2 ] : zp ZP_BYTE:52 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:53 [ anim::$3 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y , reg byte alu , +Potential registers zp ZP_BYTE:54 [ anim::$5 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:55 [ anim::j2#1 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:56 [ getFAC::return#2 ] : zp ZP_WORD:56 , +Potential registers zp ZP_WORD:58 [ gen_sintab::$23 ] : zp ZP_WORD:58 , +Potential registers zp ZP_BYTE:60 [ gen_sintab::$24 ] : zp ZP_BYTE:60 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_WORD:61 [ getFAC::return#0 ] : zp ZP_WORD:61 , +Potential registers zp ZP_BYTE:63 [ prepareMEM::$0 ] : zp ZP_BYTE:63 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:64 [ prepareMEM::$1 ] : zp ZP_BYTE:64 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:65 [ gen_chargen_sprite::ch#0 ] : zp ZP_BYTE:65 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:66 [ gen_chargen_sprite::$0 ] : zp ZP_WORD:66 , +Potential registers zp ZP_WORD:68 [ gen_chargen_sprite::$1 ] : zp ZP_WORD:68 , +Potential registers zp ZP_WORD:70 [ gen_chargen_sprite::chargen#0 ] : zp ZP_WORD:70 , +Potential registers zp ZP_BYTE:72 [ gen_chargen_sprite::$3 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:73 [ gen_chargen_sprite::$6 ] : zp ZP_BYTE:73 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:74 [ place_sprites::j2#1 ] : zp ZP_BYTE:74 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [gen_chargen_sprite] 34,904.9: zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 33,404.14: zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] 25,903.4: zp ZP_BYTE:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] 20,002: zp ZP_BYTE:77 [ gen_chargen_sprite::$7 ] 17,001.7: zp ZP_BYTE:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] 2,002: zp ZP_BYTE:76 [ gen_chargen_sprite::$4 ] 1,612.72: zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 1,051.92: zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 769.31: zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] 164.67: zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 6.5: zp ZP_BYTE:69 [ gen_chargen_sprite::ch#0 ] 4: zp ZP_WORD:70 [ gen_chargen_sprite::$0 ] 4: zp ZP_WORD:72 [ gen_chargen_sprite::$1 ] 3.68: zp ZP_WORD:74 [ gen_chargen_sprite::chargen#0 ] -Uplift Scope [anim] 490.39: zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 470.17: zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 202: zp ZP_BYTE:50 [ anim::$1 ] 202: zp ZP_BYTE:54 [ anim::$4 ] 202: zp ZP_BYTE:55 [ anim::$6 ] 202: zp ZP_BYTE:56 [ anim::$7 ] 202: zp ZP_BYTE:57 [ anim::j2#1 ] 161.6: zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] 101: zp ZP_BYTE:53 [ anim::$3 ] 89.78: zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] 79.33: zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] 75.75: zp ZP_WORD:51 [ anim::x#0 ] -Uplift Scope [place_sprites] 22: zp ZP_BYTE:78 [ place_sprites::j2#1 ] 20.9: zp ZP_BYTE:46 [ place_sprites::j#2 place_sprites::j#1 ] 18.7: zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 12.83: zp ZP_BYTE:48 [ place_sprites::j2#3 place_sprites::j2#2 ] 9.17: zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 9.11: zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplift Scope [gen_chargen_sprite] 34,904.9: zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] 33,404.14: zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] 25,903.4: zp ZP_BYTE:41 [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] 20,002: zp ZP_BYTE:73 [ gen_chargen_sprite::$6 ] 17,001.7: zp ZP_BYTE:42 [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] 2,002: zp ZP_BYTE:72 [ gen_chargen_sprite::$3 ] 1,612.72: zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] 1,051.92: zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] 769.31: zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] 164.67: zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] 6.5: zp ZP_BYTE:65 [ gen_chargen_sprite::ch#0 ] 4: zp ZP_WORD:66 [ gen_chargen_sprite::$0 ] 4: zp ZP_WORD:68 [ gen_chargen_sprite::$1 ] 3.68: zp ZP_WORD:70 [ gen_chargen_sprite::chargen#0 ] +Uplift Scope [anim] 494.02: zp ZP_BYTE:7 [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] 477.79: zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] 202: zp ZP_BYTE:53 [ anim::$3 ] 202: zp ZP_BYTE:54 [ anim::$5 ] 202: zp ZP_BYTE:55 [ anim::j2#1 ] 162.72: zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] 113.75: zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] 101: zp ZP_BYTE:52 [ anim::$2 ] 92.58: zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] 75.75: zp ZP_WORD:50 [ anim::x#0 ] +Uplift Scope [place_sprites] 22: zp ZP_BYTE:74 [ place_sprites::j2#1 ] 20.9: zp ZP_BYTE:46 [ place_sprites::j#2 place_sprites::j#1 ] 18.7: zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] 12.83: zp ZP_BYTE:48 [ place_sprites::j2#3 place_sprites::j2#2 ] 9.17: zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] 9.11: zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] Uplift Scope [setFAC] 80: zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] -Uplift Scope [gen_sintab] 22: zp ZP_WORD:60 [ gen_sintab::$23 ] 22: zp ZP_BYTE:62 [ gen_sintab::$24 ] 18.33: zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] 2: zp ZP_BYTE:12 [ gen_sintab::max#2 ] 0.44: zp ZP_BYTE:14 [ gen_sintab::length#10 ] 0.33: zp ZP_BYTE:13 [ gen_sintab::min#2 ] 0.22: zp ZP_WORD:15 [ gen_sintab::sintab#12 ] +Uplift Scope [gen_sintab] 22: zp ZP_WORD:58 [ gen_sintab::$23 ] 22: zp ZP_BYTE:60 [ gen_sintab::$24 ] 18.33: zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] 2: zp ZP_BYTE:12 [ gen_sintab::max#2 ] 0.44: zp ZP_BYTE:14 [ gen_sintab::length#10 ] 0.33: zp ZP_BYTE:13 [ gen_sintab::min#2 ] 0.22: zp ZP_WORD:15 [ gen_sintab::sintab#12 ] Uplift Scope [gen_sprites] 23.1: zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] 15.58: zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] Uplift Scope [clear_screen] 33: zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] -Uplift Scope [prepareMEM] 24.67: zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] 4: zp ZP_BYTE:67 [ prepareMEM::$0 ] 4: zp ZP_BYTE:68 [ prepareMEM::$1 ] +Uplift Scope [prepareMEM] 24.67: zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] 4: zp ZP_BYTE:63 [ prepareMEM::$0 ] 4: zp ZP_BYTE:64 [ prepareMEM::$1 ] Uplift Scope [init] 31.17: zp ZP_BYTE:9 [ init::i#2 init::i#1 ] -Uplift Scope [getFAC] 22: zp ZP_WORD:58 [ getFAC::return#2 ] 4.33: zp ZP_WORD:65 [ getFAC::return#0 ] -Uplift Scope [] 7.2: zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] 5.71: zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] 5.05: zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] 3.96: zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplift Scope [progress_inc] 4: zp ZP_BYTE:63 [ progress_inc::$2 ] 4: zp ZP_BYTE:64 [ progress_inc::$3 ] +Uplift Scope [getFAC] 22: zp ZP_WORD:56 [ getFAC::return#2 ] 4.33: zp ZP_WORD:61 [ getFAC::return#0 ] +Uplift Scope [] 7.63: zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] 6.07: zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] 5.08: zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] 4: zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Uplift Scope [setMEMtoFAC] 2: zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] Uplift Scope [addMEMtoFAC] 2: zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] Uplift Scope [divMEMbyFAC] 2: zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] @@ -21344,21 +21127,21 @@ Uplift Scope [subFACfromARG] Uplift Scope [sinFAC] Uplift Scope [main] Uplift Scope [progress_init] +Uplift Scope [progress_inc] -Uplifting [gen_chargen_sprite] best 1078185 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$7 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$4 ] zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] reg byte x [ gen_chargen_sprite::ch#0 ] zp ZP_WORD:70 [ gen_chargen_sprite::$0 ] zp ZP_WORD:72 [ gen_chargen_sprite::$1 ] zp ZP_WORD:74 [ gen_chargen_sprite::chargen#0 ] -Uplift attempts [anim] 10000/1555200 (limiting to 10000) -Uplifting [anim] best 1074082 combination reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte a [ anim::$1 ] reg byte a [ anim::$4 ] reg byte a [ anim::$6 ] reg byte a [ anim::$7 ] reg byte a [ anim::j2#1 ] zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] zp ZP_BYTE:53 [ anim::$3 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] zp ZP_WORD:51 [ anim::x#0 ] -Limited combination testing to 10000 combinations of 1555200 possible. -Uplifting [place_sprites] best 1073662 combination reg byte x [ place_sprites::j2#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] -Uplifting [setFAC] best 1073662 combination zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] -Uplifting [gen_sintab] best 1073595 combination zp ZP_WORD:60 [ gen_sintab::$23 ] reg byte a [ gen_sintab::$24 ] zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte x [ gen_sintab::max#2 ] zp ZP_BYTE:14 [ gen_sintab::length#10 ] zp ZP_BYTE:13 [ gen_sintab::min#2 ] zp ZP_WORD:15 [ gen_sintab::sintab#12 ] -Uplifting [gen_sprites] best 1073595 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] -Uplifting [clear_screen] best 1073595 combination zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] -Uplifting [prepareMEM] best 1073583 combination zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] -Uplifting [init] best 1073433 combination reg byte x [ init::i#2 init::i#1 ] -Uplifting [getFAC] best 1073433 combination zp ZP_WORD:58 [ getFAC::return#2 ] zp ZP_WORD:65 [ getFAC::return#0 ] -Uplifting [] best 1073433 combination zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] -Uplifting [progress_inc] best 1073421 combination reg byte a [ progress_inc::$2 ] reg byte a [ progress_inc::$3 ] +Uplifting [gen_chargen_sprite] best 1076973 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte a [ gen_chargen_sprite::$3 ] zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] reg byte x [ gen_chargen_sprite::ch#0 ] zp ZP_WORD:66 [ gen_chargen_sprite::$0 ] zp ZP_WORD:68 [ gen_chargen_sprite::$1 ] zp ZP_WORD:70 [ gen_chargen_sprite::chargen#0 ] +Uplift attempts [anim] 10000/77760 (limiting to 10000) +Uplifting [anim] best 1074070 combination reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 ] reg byte a [ anim::$3 ] reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] zp ZP_BYTE:52 [ anim::$2 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] zp ZP_WORD:50 [ anim::x#0 ] +Limited combination testing to 10000 combinations of 77760 possible. +Uplifting [place_sprites] best 1073650 combination reg byte x [ place_sprites::j2#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] zp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] zp ZP_BYTE:47 [ place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] +Uplifting [setFAC] best 1073650 combination zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] +Uplifting [gen_sintab] best 1073583 combination zp ZP_WORD:58 [ gen_sintab::$23 ] reg byte a [ gen_sintab::$24 ] zp ZP_BYTE:17 [ gen_sintab::i#10 gen_sintab::i#1 ] reg byte x [ gen_sintab::max#2 ] zp ZP_BYTE:14 [ gen_sintab::length#10 ] zp ZP_BYTE:13 [ gen_sintab::min#2 ] zp ZP_WORD:15 [ gen_sintab::sintab#12 ] +Uplifting [gen_sprites] best 1073583 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] +Uplifting [clear_screen] best 1073583 combination zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] +Uplifting [prepareMEM] best 1073571 combination zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] +Uplifting [init] best 1073421 combination reg byte x [ init::i#2 init::i#1 ] +Uplifting [getFAC] best 1073421 combination zp ZP_WORD:56 [ getFAC::return#2 ] zp ZP_WORD:61 [ getFAC::return#0 ] +Uplifting [] best 1073421 combination zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] zp ZP_BYTE:18 [ progress_idx#34 progress_idx#12 progress_idx#10 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 ] zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 ] Uplifting [setMEMtoFAC] best 1073421 combination zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] Uplifting [addMEMtoFAC] best 1073421 combination zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] Uplifting [divMEMbyFAC] best 1073421 combination zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] @@ -21368,11 +21151,13 @@ Uplifting [subFACfromARG] best 1073421 combination Uplifting [sinFAC] best 1073421 combination Uplifting [main] best 1073421 combination Uplifting [progress_init] best 1073421 combination +Uplifting [progress_inc] best 1073421 combination MISSING FRAGMENTS - vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 - vwuz1=vwuc1_plus_pbuc2_derefidx_vbuxx - vwuz1=vwuc1_plus_pbuc2_derefidx_vbuyy vbuz1=vbuz2_bor__hi_vwuz3 + vbuxx=vbuz1_bor__hi_vwuz2 + vbuyy=vbuz1_bor__hi_vwuz2 + vbuz1=vbuaa_bor__hi_vwuz2 + vbuxx=vbuaa_bor__hi_vwuz1 Attempting to uplift remaining variables inzp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] @@ -21387,12 +21172,12 @@ Attempting to uplift remaining variables inzp ZP_BYTE:36 [ gen_chargen_sprite::y Uplifting [gen_chargen_sprite] best 1073421 combination zp ZP_BYTE:36 [ gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] Uplifting [anim] best 1073421 combination zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:53 [ anim::$3 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:53 [ anim::$3 ] -Attempting to uplift remaining variables inzp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] -Uplifting [anim] best 1073421 combination zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] Uplifting [anim] best 1073421 combination zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:52 [ anim::$2 ] +Uplifting [anim] best 1073421 combination zp ZP_BYTE:52 [ anim::$2 ] +Attempting to uplift remaining variables inzp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] +Uplifting [anim] best 1073421 combination zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] Attempting to uplift remaining variables inzp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Uplifting [gen_sprites] best 1073421 combination zp ZP_BYTE:33 [ gen_sprites::i#2 gen_sprites::i#1 ] Attempting to uplift remaining variables inzp ZP_BYTE:45 [ place_sprites::spr_id#2 place_sprites::spr_id#1 ] @@ -21424,24 +21209,24 @@ Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::x Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 ] ] with [ zp ZP_BYTE:37 [ gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] Coalescing zero page register [ zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 ] ] with [ zp ZP_BYTE:49 [ place_sprites::col#2 place_sprites::col#1 ] ] Coalescing zero page register [ zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 ] ] with [ zp ZP_BYTE:38 [ gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] with [ zp ZP_BYTE:53 [ anim::$3 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 ] ] with [ zp ZP_BYTE:52 [ anim::$2 ] ] Coalescing zero page register [ zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 ] ] with [ zp ZP_BYTE:39 [ gen_chargen_sprite::c#3 ] ] Coalescing zero page register [ zp ZP_BYTE:8 [ anim::j#2 anim::j#1 ] ] with [ zp ZP_BYTE:40 [ gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] ] Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 ] ] with [ zp ZP_WORD:15 [ gen_sintab::sintab#12 ] ] Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 ] ] with [ zp ZP_WORD:34 [ gen_sprites::spr#2 gen_sprites::spr#1 ] ] -Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ] ] with [ zp ZP_WORD:51 [ anim::x#0 ] ] +Coalescing zero page register [ zp ZP_WORD:10 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 ] ] with [ zp ZP_WORD:50 [ anim::x#0 ] ] Coalescing zero page register [ zp ZP_WORD:19 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 ] ] with [ zp ZP_WORD:43 [ gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 ] ] with [ zp ZP_WORD:23 [ prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] ] with [ zp ZP_WORD:25 [ mulFACbyMEM::mem#2 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 ] ] with [ zp ZP_WORD:27 [ divMEMbyFAC::mem#2 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 ] ] with [ zp ZP_WORD:29 [ setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] ] Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 ] ] with [ zp ZP_WORD:31 [ setMEMtoFAC::mem#5 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 ] ] with [ zp ZP_WORD:58 [ getFAC::return#2 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 ] ] with [ zp ZP_WORD:60 [ gen_sintab::$23 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 ] ] with [ zp ZP_WORD:65 [ getFAC::return#0 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 ] ] with [ zp ZP_WORD:70 [ gen_chargen_sprite::$0 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 ] ] with [ zp ZP_WORD:72 [ gen_chargen_sprite::$1 ] ] -Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ] ] with [ zp ZP_WORD:74 [ gen_chargen_sprite::chargen#0 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 ] ] with [ zp ZP_WORD:56 [ getFAC::return#2 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 ] ] with [ zp ZP_WORD:58 [ gen_sintab::$23 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 ] ] with [ zp ZP_WORD:61 [ getFAC::return#0 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 ] ] with [ zp ZP_WORD:66 [ gen_chargen_sprite::$0 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 ] ] with [ zp ZP_WORD:68 [ gen_chargen_sprite::$1 ] ] +Coalescing zero page register [ zp ZP_WORD:21 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 ] ] with [ zp ZP_WORD:70 [ gen_chargen_sprite::chargen#0 ] ] Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] Allocated (was zp ZP_WORD:10) zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ] Allocated (was zp ZP_WORD:19) zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] @@ -21496,7 +21281,7 @@ bend: //SEG9 main main: { //SEG10 [5] call init param-assignment [ ] ( main:2 [ ] ) - //SEG11 [48] phi from main to init [phi:main->init] + //SEG11 [46] phi from main to init [phi:main->init] init_from_main: jsr init //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] @@ -21542,7 +21327,7 @@ main: { } //SEG28 anim anim: { - .label _3 = 5 + .label _2 = 5 .label xidx = 4 .label x = 8 .label x_msb = 5 @@ -21579,311 +21364,309 @@ anim: { jmp b1 //SEG44 anim::@1 b1: - //SEG45 [16] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG45 [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) -- vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 ldx xidx lda sintab_x,x - //SEG46 [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) -- vwuz1=vwuc1_plus_vbuaa clc adc #<$1e sta x lda #>$1e adc #0 sta x+1 - //SEG47 [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) -- vbuz1=vbuz1_rol_1 - asl _3 - //SEG48 [19] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ) -- vbuaa=_hi_vwuz1 + //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuz1=vbuz1_rol_1 + asl _2 + //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) -- vbuaa=_hi_vwuz1 lda x+1 - //SEG49 [20] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz1_bor_vbuaa + //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz1_bor_vbuaa ora x_msb sta x_msb - //SEG50 [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) -- vbuaa=_lo_vwuz1 + //SEG49 [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) -- vbuaa=_lo_vwuz1 lda x - //SEG51 [22] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuaa + //SEG50 [21] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuaa ldx j2 sta SPRITES_XPOS,x - //SEG52 [23] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG51 [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuyy lda sintab_y,y - //SEG53 [24] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuaa ldx j2 sta SPRITES_YPOS,x - //SEG54 [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG52 [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda xidx clc adc #$a sta xidx - //SEG55 [26] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG53 [24] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda xidx cmp #sinlen_x bcc b2_from_b1 jmp b6 - //SEG56 anim::@6 + //SEG54 anim::@6 b6: - //SEG57 [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 + //SEG55 [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 lda xidx sec sbc #sinlen_x sta xidx - //SEG58 [28] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] + //SEG56 [26] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] b2_from_b1: b2_from_b6: - //SEG59 [28] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy + //SEG57 [26] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy jmp b2 - //SEG60 anim::@2 + //SEG58 anim::@2 b2: - //SEG61 [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy=vbuyy_plus_vbuc1 + //SEG59 [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy=vbuyy_plus_vbuc1 tya clc adc #8 tay - //SEG62 [30] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy_lt_vbuc1_then_la1 + //SEG60 [28] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy_lt_vbuc1_then_la1 cpy #sinlen_y bcc b3_from_b2 jmp b7 - //SEG63 anim::@7 + //SEG61 anim::@7 b7: - //SEG64 [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) -- vbuyy=vbuyy_minus_vbuc1 + //SEG62 [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) -- vbuyy=vbuyy_minus_vbuc1 tya sec sbc #sinlen_y tay - //SEG65 [32] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] + //SEG63 [30] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] b3_from_b2: b3_from_b7: - //SEG66 [32] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy + //SEG64 [30] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy jmp b3 - //SEG67 anim::@3 + //SEG65 anim::@3 b3: - //SEG68 [33] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) -- vbuaa=_dec_vbuz1 + //SEG66 [31] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) -- vbuaa=_dec_vbuz1 lda j2 sec sbc #1 - //SEG69 [34] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) -- vbuz1=_dec_vbuaa + //SEG67 [32] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) -- vbuz1=_dec_vbuaa sta j2 dec j2 - //SEG70 [35] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG68 [33] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j - //SEG71 [36] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG69 [34] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1_from_b3 jmp b8 - //SEG72 anim::@8 + //SEG70 anim::@8 b8: - //SEG73 [37] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=vbuz1 + //SEG71 [35] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=vbuz1 lda x_msb sta SPRITES_XMSB - //SEG74 [38] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1=_inc_vbuz1 + //SEG72 [36] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1=_inc_vbuz1 inc sin_idx_x - //SEG75 [39] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG73 [37] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_x cmp #sinlen_x bcc b14_from_b8 - //SEG76 [40] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] + //SEG74 [38] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] b4_from_b8: - //SEG77 [40] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 + //SEG75 [38] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_x jmp b4 - //SEG78 anim::@4 + //SEG76 anim::@4 b4: - //SEG79 [41] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1=_inc_vbuz1 + //SEG77 [39] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1=_inc_vbuz1 inc sin_idx_y - //SEG80 [42] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG78 [40] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_y cmp #sinlen_y bcc b15_from_b4 - //SEG81 [43] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] + //SEG79 [41] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] b5_from_b4: - //SEG82 [43] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 + //SEG80 [41] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y jmp b5 - //SEG83 anim::@5 + //SEG81 anim::@5 b5: - //SEG84 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG82 [42] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL jmp breturn - //SEG85 anim::@return + //SEG83 anim::@return breturn: - //SEG86 [45] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + //SEG84 [43] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) rts - //SEG87 [46] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] + //SEG85 [44] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] b15_from_b4: jmp b15 - //SEG88 anim::@15 + //SEG86 anim::@15 b15: - //SEG89 [43] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] + //SEG87 [41] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] b5_from_b15: - //SEG90 [43] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy + //SEG88 [41] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy jmp b5 - //SEG91 [47] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] + //SEG89 [45] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] b14_from_b8: jmp b14 - //SEG92 anim::@14 + //SEG90 anim::@14 b14: - //SEG93 [40] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] + //SEG91 [38] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] b4_from_b14: - //SEG94 [40] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy + //SEG92 [38] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy jmp b4 } -//SEG95 init +//SEG93 init init: { - //SEG96 [49] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG97 [70] phi from init to clear_screen [phi:init->clear_screen] + //SEG94 [47] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG95 [68] phi from init to clear_screen [phi:init->clear_screen] clear_screen_from_init: jsr clear_screen - //SEG98 [50] phi from init to init::@1 [phi:init->init::@1] + //SEG96 [48] phi from init to init::@1 [phi:init->init::@1] b1_from_init: - //SEG99 [50] phi (byte) init::i#2 = (byte/signed byte/word/signed word) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 + //SEG97 [48] phi (byte) init::i#2 = (byte/signed byte/word/signed word) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG100 [50] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG98 [48] phi from init::@1 to init::@1 [phi:init::@1->init::@1] b1_from_b1: - //SEG101 [50] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG99 [48] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy jmp b1 - //SEG102 init::@1 + //SEG100 init::@1 b1: - //SEG103 [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG101 [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta COLS,x - //SEG104 [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG102 [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #$b sta COLS+$28,x - //SEG105 [53] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG103 [51] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG106 [54] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG104 [52] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1_from_b1 - //SEG107 [55] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG105 [53] phi from init::@1 to init::@2 [phi:init::@1->init::@2] b2_from_b1: jmp b2 - //SEG108 init::@2 + //SEG106 init::@2 b2: - //SEG109 [56] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG107 [54] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) jsr place_sprites - //SEG110 [57] phi from init::@2 to init::@4 [phi:init::@2->init::@4] + //SEG108 [55] phi from init::@2 to init::@4 [phi:init::@2->init::@4] b4_from_b2: jmp b4 - //SEG111 init::@4 + //SEG109 init::@4 b4: - //SEG112 [58] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG113 [178] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] + //SEG110 [56] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG111 [174] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] gen_sprites_from_b4: jsr gen_sprites - //SEG114 [59] phi from init::@4 to init::@5 [phi:init::@4->init::@5] + //SEG112 [57] phi from init::@4 to init::@5 [phi:init::@4->init::@5] b5_from_b4: jmp b5 - //SEG115 init::@5 + //SEG113 init::@5 b5: - //SEG116 [60] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - //SEG117 [176] phi from init::@5 to progress_init [phi:init::@5->progress_init] + //SEG114 [58] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + //SEG115 [172] phi from init::@5 to progress_init [phi:init::@5->progress_init] progress_init_from_b5: - //SEG118 [176] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 + //SEG116 [172] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN sta progress_init.line+1 jsr progress_init - //SEG119 [61] phi from init::@5 to init::@6 [phi:init::@5->init::@6] + //SEG117 [59] phi from init::@5 to init::@6 [phi:init::@5->init::@6] b6_from_b5: jmp b6 - //SEG120 init::@6 + //SEG118 init::@6 b6: - //SEG121 [62] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG122 [76] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] + //SEG119 [60] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG120 [74] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] gen_sintab_from_b6: - //SEG123 [76] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 + //SEG121 [74] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_x sta gen_sintab.sintab+1 - //SEG124 [76] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 + //SEG122 [74] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_x sta gen_sintab.length - //SEG125 [76] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 + //SEG123 [74] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG126 [76] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 + //SEG124 [74] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 ldx #$ff jsr gen_sintab - //SEG127 [63] phi from init::@6 to init::@7 [phi:init::@6->init::@7] + //SEG125 [61] phi from init::@6 to init::@7 [phi:init::@6->init::@7] b7_from_b6: jmp b7 - //SEG128 init::@7 + //SEG126 init::@7 b7: - //SEG129 [64] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - //SEG130 [176] phi from init::@7 to progress_init [phi:init::@7->progress_init] + //SEG127 [62] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + //SEG128 [172] phi from init::@7 to progress_init [phi:init::@7->progress_init] progress_init_from_b7: - //SEG131 [176] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 + //SEG129 [172] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN+$28 sta progress_init.line+1 jsr progress_init - //SEG132 [65] phi from init::@7 to init::@8 [phi:init::@7->init::@8] + //SEG130 [63] phi from init::@7 to init::@8 [phi:init::@7->init::@8] b8_from_b7: jmp b8 - //SEG133 init::@8 + //SEG131 init::@8 b8: - //SEG134 [66] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG135 [76] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] + //SEG132 [64] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG133 [74] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] gen_sintab_from_b8: - //SEG136 [76] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 + //SEG134 [74] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_y sta gen_sintab.sintab+1 - //SEG137 [76] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 + //SEG135 [74] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_y sta gen_sintab.length - //SEG138 [76] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 + //SEG136 [74] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG139 [76] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 + //SEG137 [74] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 ldx #$d0 jsr gen_sintab - //SEG140 [67] phi from init::@8 to init::@9 [phi:init::@8->init::@9] + //SEG138 [65] phi from init::@8 to init::@9 [phi:init::@8->init::@9] b9_from_b8: jmp b9 - //SEG141 init::@9 + //SEG139 init::@9 b9: - //SEG142 [68] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG143 [70] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] + //SEG140 [66] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG141 [68] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] clear_screen_from_b9: jsr clear_screen jmp breturn - //SEG144 init::@return + //SEG142 init::@return breturn: - //SEG145 [69] return [ ] ( main:2::init:5 [ ] ) + //SEG143 [67] return [ ] ( main:2::init:5 [ ] ) rts } -//SEG146 clear_screen +//SEG144 clear_screen clear_screen: { .label sc = 8 - //SEG147 [71] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] + //SEG145 [69] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] b1_from_clear_screen: - //SEG148 [71] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 + //SEG146 [69] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 jmp b1 - //SEG149 [71] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] + //SEG147 [69] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] b1_from_b1: - //SEG150 [71] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy + //SEG148 [69] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy jmp b1 - //SEG151 clear_screen::@1 + //SEG149 clear_screen::@1 b1: - //SEG152 [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG150 [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #' ' sta (sc),y - //SEG153 [73] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG151 [71] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG154 [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG152 [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -21893,12 +21676,12 @@ clear_screen: { bcc b1_from_b1 !: jmp breturn - //SEG155 clear_screen::@return + //SEG153 clear_screen::@return breturn: - //SEG156 [75] return [ ] ( main:2::init:5::clear_screen:49 [ ] main:2::init:5::clear_screen:68 [ ] ) + //SEG154 [73] return [ ] ( main:2::init:5::clear_screen:47 [ ] main:2::init:5::clear_screen:66 [ ] ) rts } -//SEG157 gen_sintab +//SEG155 gen_sintab gen_sintab: { .const f_2pi = $e2e5 .label _23 = $c @@ -21906,575 +21689,573 @@ gen_sintab: { .label min = 2 .label length = 3 .label sintab = 8 - //SEG158 [77] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuxx + //SEG156 [75] (word) setFAC::w#0 ← ((word)) (byte) gen_sintab::max#2 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#0 progress_init::line#2 ] ) -- vwuz1=_word_vbuxx txa sta setFAC.w lda #0 sta setFAC.w+1 - //SEG159 [78] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG160 [162] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] + //SEG157 [76] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG158 [158] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] setFAC_from_gen_sintab: - //SEG161 [162] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy + //SEG159 [158] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy jsr setFAC - //SEG162 [79] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] + //SEG160 [77] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] b3_from_gen_sintab: jmp b3 - //SEG163 gen_sintab::@3 + //SEG161 gen_sintab::@3 b3: - //SEG164 [80] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG162 [78] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) jsr setARGtoFAC jmp b4 - //SEG165 gen_sintab::@4 + //SEG163 gen_sintab::@4 b4: - //SEG166 asm { lda#0ldx#0ldy#0 } + //SEG164 asm { lda#0ldx#0ldy#0 } lda #0 ldx #0 ldy #0 - //SEG167 [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 + //SEG165 [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 lda min sta setFAC.w lda #0 sta setFAC.w+1 - //SEG168 [83] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG169 [162] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] + //SEG166 [81] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG167 [158] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] setFAC_from_b4: - //SEG170 [162] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy + //SEG168 [158] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy jsr setFAC - //SEG171 [84] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] + //SEG169 [82] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] b5_from_b4: jmp b5 - //SEG172 gen_sintab::@5 + //SEG170 gen_sintab::@5 b5: - //SEG173 [85] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG174 [167] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] + //SEG171 [83] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG172 [163] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] setMEMtoFAC_from_b5: - //SEG175 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG173 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG176 [86] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] + //SEG174 [84] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] b6_from_b5: jmp b6 - //SEG177 gen_sintab::@6 + //SEG175 gen_sintab::@6 b6: - //SEG178 [87] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG176 [85] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) jsr subFACfromARG - //SEG179 [88] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] + //SEG177 [86] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] b7_from_b6: jmp b7 - //SEG180 gen_sintab::@7 + //SEG178 gen_sintab::@7 b7: - //SEG181 [89] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG182 [167] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] + //SEG179 [87] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG180 [163] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] setMEMtoFAC_from_b7: - //SEG183 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG181 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG184 [90] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] + //SEG182 [88] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] b8_from_b7: jmp b8 - //SEG185 gen_sintab::@8 + //SEG183 gen_sintab::@8 b8: - //SEG186 [91] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG187 [162] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] + //SEG184 [89] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG185 [158] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] setFAC_from_b8: - //SEG188 [162] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG186 [158] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 lda #2 sta setFAC.w lda #0 sta setFAC.w+1 jsr setFAC - //SEG189 [92] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] + //SEG187 [90] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] b9_from_b8: jmp b9 - //SEG190 gen_sintab::@9 + //SEG188 gen_sintab::@9 b9: - //SEG191 [93] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG192 [157] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] + //SEG189 [91] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG190 [153] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] divMEMbyFAC_from_b9: - //SEG193 [157] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG191 [153] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_amp sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG194 [94] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] + //SEG192 [92] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] b10_from_b9: jmp b10 - //SEG195 gen_sintab::@10 + //SEG193 gen_sintab::@10 b10: - //SEG196 [95] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG197 [167] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] + //SEG194 [93] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG195 [163] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] setMEMtoFAC_from_b10: - //SEG198 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG196 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG199 [96] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] + //SEG197 [94] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] b11_from_b10: jmp b11 - //SEG200 gen_sintab::@11 + //SEG198 gen_sintab::@11 b11: - //SEG201 [97] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG202 [139] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] + //SEG199 [95] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG200 [135] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] addMEMtoFAC_from_b11: - //SEG203 [139] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@11->addMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG201 [135] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@11->addMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta addMEMtoFAC.mem+1 jsr addMEMtoFAC - //SEG204 [98] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] + //SEG202 [96] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] b12_from_b11: jmp b12 - //SEG205 gen_sintab::@12 + //SEG203 gen_sintab::@12 b12: - //SEG206 [99] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG207 [167] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] + //SEG204 [97] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG205 [163] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] setMEMtoFAC_from_b12: - //SEG208 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG206 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG209 [100] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] + //SEG207 [98] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] b1_from_b12: - //SEG210 [100] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy - //SEG211 [100] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 + //SEG208 [98] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy + //SEG209 [98] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG212 [100] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 + //SEG210 [98] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG213 [100] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] + //SEG211 [98] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] b1_from_b23: - //SEG214 [100] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy - //SEG215 [100] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy - //SEG216 [100] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy + //SEG212 [98] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy + //SEG213 [98] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy + //SEG214 [98] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy jmp b1 - //SEG217 gen_sintab::@1 + //SEG215 gen_sintab::@1 b1: - //SEG218 [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) -- vwuz1=_word_vbuz2 + //SEG216 [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG219 [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG220 [162] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] + //SEG217 [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG218 [158] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] setFAC_from_b1: - //SEG221 [162] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy + //SEG219 [158] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy jsr setFAC - //SEG222 [103] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] + //SEG220 [101] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] b14_from_b1: jmp b14 - //SEG223 gen_sintab::@14 + //SEG221 gen_sintab::@14 b14: - //SEG224 [104] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG225 [150] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] + //SEG222 [102] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG223 [146] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] mulFACbyMEM_from_b14: - //SEG226 [150] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG224 [146] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG227 [105] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] + //SEG225 [103] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] b15_from_b14: jmp b15 - //SEG228 gen_sintab::@15 + //SEG226 gen_sintab::@15 b15: - //SEG229 [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG230 [167] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] + //SEG227 [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG228 [163] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] setMEMtoFAC_from_b15: - //SEG231 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG229 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC jmp b16 - //SEG232 gen_sintab::@16 + //SEG230 gen_sintab::@16 b16: - //SEG233 [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) -- vwuz1=_word_vbuz2 + //SEG231 [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) -- vwuz1=_word_vbuz2 lda length sta setFAC.w lda #0 sta setFAC.w+1 - //SEG234 [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG235 [162] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] + //SEG232 [106] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG233 [158] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] setFAC_from_b16: - //SEG236 [162] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy + //SEG234 [158] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy jsr setFAC - //SEG237 [109] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] + //SEG235 [107] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] b17_from_b16: jmp b17 - //SEG238 gen_sintab::@17 + //SEG236 gen_sintab::@17 b17: - //SEG239 [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG240 [157] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] + //SEG237 [108] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG238 [153] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] divMEMbyFAC_from_b17: - //SEG241 [157] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG239 [153] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_i sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG242 [111] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] + //SEG240 [109] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] b18_from_b17: jmp b18 - //SEG243 gen_sintab::@18 + //SEG241 gen_sintab::@18 b18: - //SEG244 [112] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG242 [110] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) jsr sinFAC - //SEG245 [113] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] + //SEG243 [111] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] b19_from_b18: jmp b19 - //SEG246 gen_sintab::@19 + //SEG244 gen_sintab::@19 b19: - //SEG247 [114] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG248 [150] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] + //SEG245 [112] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG246 [146] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] mulFACbyMEM_from_b19: - //SEG249 [150] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG247 [146] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_amp sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG250 [115] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] + //SEG248 [113] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] b20_from_b19: jmp b20 - //SEG251 gen_sintab::@20 + //SEG249 gen_sintab::@20 b20: - //SEG252 [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG253 [139] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] + //SEG250 [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG251 [135] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] addMEMtoFAC_from_b20: - //SEG254 [139] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@20->addMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG252 [135] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@20->addMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta addMEMtoFAC.mem+1 jsr addMEMtoFAC - //SEG255 [117] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] + //SEG253 [115] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] b21_from_b20: jmp b21 - //SEG256 gen_sintab::@21 + //SEG254 gen_sintab::@21 b21: - //SEG257 [118] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + //SEG255 [116] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) jsr getFAC - //SEG258 [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) + //SEG256 [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:12 jmp b22 - //SEG259 gen_sintab::@22 + //SEG257 gen_sintab::@22 b22: - //SEG260 [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) + //SEG258 [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) // (word~) gen_sintab::$23 = (word) getFAC::return#2 // register copy zp ZP_WORD:12 - //SEG261 [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuaa=_byte_vwuz1 + //SEG259 [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuaa=_byte_vwuz1 lda _23 - //SEG262 [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuaa + //SEG260 [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuaa ldy i sta (sintab),y - //SEG263 [123] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + //SEG261 [121] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) jsr progress_inc jmp b23 - //SEG264 gen_sintab::@23 + //SEG262 gen_sintab::@23 b23: - //SEG265 [124] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1=_inc_vbuz1 + //SEG263 [122] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG266 [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1_lt_vbuz2_then_la1 + //SEG264 [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1_lt_vbuz2_then_la1 lda i cmp length bcc b1_from_b23 jmp breturn - //SEG267 gen_sintab::@return + //SEG265 gen_sintab::@return breturn: - //SEG268 [126] return [ ] ( main:2::init:5::gen_sintab:62 [ ] main:2::init:5::gen_sintab:66 [ ] ) + //SEG266 [124] return [ ] ( main:2::init:5::gen_sintab:60 [ ] main:2::init:5::gen_sintab:64 [ ] ) rts f_i: .byte 0, 0, 0, 0, 0 f_min: .byte 0, 0, 0, 0, 0 f_amp: .byte 0, 0, 0, 0, 0 } -//SEG269 progress_inc +//SEG267 progress_inc progress_inc: { - //SEG270 [127] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1=_inc_vbuz1 + //SEG268 [125] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1=_inc_vbuz1 inc progress_idx - //SEG271 [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG269 [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1_neq_vbuc1_then_la1 lda progress_idx cmp #8 bne b1_from_progress_inc jmp b2 - //SEG272 progress_inc::@2 + //SEG270 progress_inc::@2 b2: - //SEG273 [129] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] ) -- vbuaa=_deref_pbuc1 + //SEG271 [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 - //SEG274 [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (progress_cursor),y - //SEG275 [131] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) -- pbuz1=_inc_pbuz1 + //SEG272 [128] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) -- pbuz1=_inc_pbuz1 inc progress_cursor bne !+ inc progress_cursor+1 !: - //SEG276 [132] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + //SEG273 [129] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] b1_from_b2: - //SEG277 [132] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - //SEG278 [132] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + //SEG274 [129] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + //SEG275 [129] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx jmp b1 - //SEG279 [132] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + //SEG276 [129] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] b1_from_progress_inc: - //SEG280 [132] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy - //SEG281 [132] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy + //SEG277 [129] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy + //SEG278 [129] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy jmp b1 - //SEG282 progress_inc::@1 + //SEG279 progress_inc::@1 b1: - //SEG283 [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG280 [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx progress_idx lda progress_chars,x - //SEG284 [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (progress_cursor),y jmp breturn - //SEG285 progress_inc::@return + //SEG281 progress_inc::@return breturn: - //SEG286 [135] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + //SEG282 [131] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) rts progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } -//SEG287 getFAC +//SEG283 getFAC getFAC: { .label return = $c - //SEG288 asm { jsr$b1aasty$festa$ff } + //SEG284 asm { jsr$b1aasty$festa$ff } jsr $b1aa sty $fe sta $ff - //SEG289 [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG285 [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 jmp breturn - //SEG290 getFAC::@return + //SEG286 getFAC::@return breturn: - //SEG291 [138] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + //SEG287 [134] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) rts } -//SEG292 addMEMtoFAC +//SEG288 addMEMtoFAC addMEMtoFAC: { .label mem = $c - //SEG293 [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) + //SEG289 [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) // (byte*) prepareMEM::mem#2 = (byte*) addMEMtoFAC::mem#2 // register copy zp ZP_WORD:12 - //SEG294 [141] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG295 [144] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG290 [137] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG291 [140] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] prepareMEM_from_addMEMtoFAC: - //SEG296 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy + //SEG292 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG297 addMEMtoFAC::@1 + //SEG293 addMEMtoFAC::@1 b1: - //SEG298 asm { lda$feldy$ffjsr$b867 } + //SEG294 asm { lda$feldy$ffjsr$b867 } lda $fe ldy $ff jsr $b867 jmp breturn - //SEG299 addMEMtoFAC::@return + //SEG295 addMEMtoFAC::@return breturn: - //SEG300 [143] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG296 [139] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG301 prepareMEM +//SEG297 prepareMEM prepareMEM: { .label mem = $c - //SEG302 [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuaa=_lo_pbuz1 + //SEG298 [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuaa=_lo_pbuz1 lda mem - //SEG303 [146] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuaa + //SEG299 [142] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuaa sta memLo - //SEG304 [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) -- vbuaa=_hi_pbuz1 + //SEG300 [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) -- vbuaa=_hi_pbuz1 lda mem+1 - //SEG305 [148] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- _deref_pbuc1=vbuaa + //SEG301 [144] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- _deref_pbuc1=vbuaa sta memHi jmp breturn - //SEG306 prepareMEM::@return + //SEG302 prepareMEM::@return breturn: - //SEG307 [149] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG303 [145] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG308 mulFACbyMEM +//SEG304 mulFACbyMEM mulFACbyMEM: { .label mem = $c - //SEG309 [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) + //SEG305 [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) // (byte*) prepareMEM::mem#4 = (byte*) mulFACbyMEM::mem#2 // register copy zp ZP_WORD:12 - //SEG310 [152] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG311 [144] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG306 [148] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG307 [140] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] prepareMEM_from_mulFACbyMEM: - //SEG312 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG308 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG313 mulFACbyMEM::@1 + //SEG309 mulFACbyMEM::@1 b1: - //SEG314 asm { lda$feldy$ffjsr$ba28 } + //SEG310 asm { lda$feldy$ffjsr$ba28 } lda $fe ldy $ff jsr $ba28 jmp breturn - //SEG315 mulFACbyMEM::@return + //SEG311 mulFACbyMEM::@return breturn: - //SEG316 [154] return [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG312 [150] return [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG317 sinFAC +//SEG313 sinFAC sinFAC: { - //SEG318 asm { jsr$e26b } + //SEG314 asm { jsr$e26b } jsr $e26b jmp breturn - //SEG319 sinFAC::@return + //SEG315 sinFAC::@return breturn: - //SEG320 [156] return [ ] ( main:2::init:5::gen_sintab:62::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG316 [152] return [ ] ( main:2::init:5::gen_sintab:60::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG321 divMEMbyFAC +//SEG317 divMEMbyFAC divMEMbyFAC: { .label mem = $c - //SEG322 [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) + //SEG318 [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) // (byte*) prepareMEM::mem#3 = (byte*) divMEMbyFAC::mem#2 // register copy zp ZP_WORD:12 - //SEG323 [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG324 [144] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG319 [155] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG320 [140] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] prepareMEM_from_divMEMbyFAC: - //SEG325 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy + //SEG321 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG326 divMEMbyFAC::@1 + //SEG322 divMEMbyFAC::@1 b1: - //SEG327 asm { lda$feldy$ffjsr$bb0f } + //SEG323 asm { lda$feldy$ffjsr$bb0f } lda $fe ldy $ff jsr $bb0f jmp breturn - //SEG328 divMEMbyFAC::@return + //SEG324 divMEMbyFAC::@return breturn: - //SEG329 [161] return [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG325 [157] return [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG330 setFAC +//SEG326 setFAC setFAC: { .label w = $c - //SEG331 [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz1 - //SEG332 [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG333 [144] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG327 [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz1 + //SEG328 [160] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG329 [140] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] prepareMEM_from_setFAC: - //SEG334 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG330 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG335 setFAC::@1 + //SEG331 setFAC::@1 b1: - //SEG336 asm { ldy$felda$ffjsr$b391 } + //SEG332 asm { ldy$felda$ffjsr$b391 } ldy $fe lda $ff jsr $b391 jmp breturn - //SEG337 setFAC::@return + //SEG333 setFAC::@return breturn: - //SEG338 [166] return [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG334 [162] return [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG339 setMEMtoFAC +//SEG335 setMEMtoFAC setMEMtoFAC: { .label mem = $c - //SEG340 [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) + //SEG336 [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) // (byte*) prepareMEM::mem#1 = (byte*) setMEMtoFAC::mem#5 // register copy zp ZP_WORD:12 - //SEG341 [169] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG342 [144] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG337 [165] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG338 [140] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] prepareMEM_from_setMEMtoFAC: - //SEG343 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG339 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM jmp b1 - //SEG344 setMEMtoFAC::@1 + //SEG340 setMEMtoFAC::@1 b1: - //SEG345 asm { ldx$feldy$ffjsr$bbd4 } + //SEG341 asm { ldx$feldy$ffjsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 jmp breturn - //SEG346 setMEMtoFAC::@return + //SEG342 setMEMtoFAC::@return breturn: - //SEG347 [171] return [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG343 [167] return [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG348 subFACfromARG +//SEG344 subFACfromARG subFACfromARG: { - //SEG349 asm { jsr$b853 } + //SEG345 asm { jsr$b853 } jsr $b853 jmp breturn - //SEG350 subFACfromARG::@return + //SEG346 subFACfromARG::@return breturn: - //SEG351 [173] return [ ] ( main:2::init:5::gen_sintab:62::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG347 [169] return [ ] ( main:2::init:5::gen_sintab:60::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) rts } -//SEG352 setARGtoFAC +//SEG348 setARGtoFAC setARGtoFAC: { - //SEG353 asm { jsr$bc0f } + //SEG349 asm { jsr$bc0f } jsr $bc0f jmp breturn - //SEG354 setARGtoFAC::@return + //SEG350 setARGtoFAC::@return breturn: - //SEG355 [175] return [ ] ( main:2::init:5::gen_sintab:62::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG351 [171] return [ ] ( main:2::init:5::gen_sintab:60::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) rts } -//SEG356 progress_init +//SEG352 progress_init progress_init: { .label line = $a jmp breturn - //SEG357 progress_init::@return + //SEG353 progress_init::@return breturn: - //SEG358 [177] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + //SEG354 [173] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) rts } -//SEG359 gen_sprites +//SEG355 gen_sprites gen_sprites: { .label spr = 8 .label i = 2 - //SEG360 [179] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] + //SEG356 [175] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] b1_from_gen_sprites: - //SEG361 [179] phi (byte*) gen_sprites::spr#2 = (const byte[]) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 + //SEG357 [175] phi (byte*) gen_sprites::spr#2 = (const byte[]) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #sprites sta spr+1 - //SEG362 [179] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 + //SEG358 [175] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG363 [179] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] + //SEG359 [175] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] b1_from_b3: - //SEG364 [179] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy - //SEG365 [179] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy + //SEG360 [175] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy + //SEG361 [175] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy jmp b1 - //SEG366 gen_sprites::@1 + //SEG362 gen_sprites::@1 b1: - //SEG367 [180] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG363 [176] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 ldx i lda cml,x tax - //SEG368 [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 + //SEG364 [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite lda spr+1 sta gen_chargen_sprite.sprite+1 - //SEG369 [182] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + //SEG365 [178] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) jsr gen_chargen_sprite jmp b3 - //SEG370 gen_sprites::@3 + //SEG366 gen_sprites::@3 b3: - //SEG371 [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG367 [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda spr clc adc #$40 @@ -22482,20 +22263,20 @@ gen_sprites: { bcc !+ inc spr+1 !: - //SEG372 [184] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG368 [180] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG373 [185] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG369 [181] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #7 bne b1_from_b3 jmp breturn - //SEG374 gen_sprites::@return + //SEG370 gen_sprites::@return breturn: - //SEG375 [186] return [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + //SEG371 [182] return [ ] ( main:2::init:5::gen_sprites:56 [ ] ) rts cml: .text "camelot" } -//SEG376 gen_chargen_sprite +//SEG372 gen_chargen_sprite gen_chargen_sprite: { .label _0 = $c .label _1 = $c @@ -22506,19 +22287,19 @@ gen_chargen_sprite: { .label x = 5 .label y = 3 .label c = 6 - //SEG377 [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuxx + //SEG373 [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuxx txa sta _0 lda #0 sta _0+1 - //SEG378 [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz1_rol_3 + //SEG374 [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG379 [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz1 + //SEG375 [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz1 lda chargen clc adc #CHARGEN sta chargen+1 - //SEG380 asm { sei } + //SEG376 asm { sei } sei - //SEG381 [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- _deref_pbuc1=vbuc2 + //SEG377 [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG382 [192] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] + //SEG378 [188] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] b1_from_gen_chargen_sprite: - //SEG383 [192] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy - //SEG384 [192] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 + //SEG379 [188] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy + //SEG380 [188] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG385 [192] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] + //SEG381 [188] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] b1_from_b9: - //SEG386 [192] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy - //SEG387 [192] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy + //SEG382 [188] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy + //SEG383 [188] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy jmp b1 - //SEG388 gen_chargen_sprite::@1 + //SEG384 gen_chargen_sprite::@1 b1: - //SEG389 [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG385 [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG390 [194] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] + //SEG386 [190] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] b2_from_b1: - //SEG391 [194] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 + //SEG387 [190] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG392 [194] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy - //SEG393 [194] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 + //SEG388 [190] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy + //SEG389 [190] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 ldy #0 - //SEG394 [194] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 + //SEG390 [190] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 lda #0 sta s_gen - //SEG395 [194] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy + //SEG391 [190] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG396 [194] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] + //SEG392 [190] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] b2_from_b8: - //SEG397 [194] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy - //SEG398 [194] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy - //SEG399 [194] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy - //SEG400 [194] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy - //SEG401 [194] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy + //SEG393 [190] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy + //SEG394 [190] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy + //SEG395 [190] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy + //SEG396 [190] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy + //SEG397 [190] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy jmp b2 - //SEG402 gen_chargen_sprite::@2 + //SEG398 gen_chargen_sprite::@2 b2: - //SEG403 [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) -- vbuaa=vbuz1_band_vbuc1 + //SEG399 [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) -- vbuaa=vbuz1_band_vbuc1 lda bits and #$80 - //SEG404 [196] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuaa_eq_0_then_la1 + //SEG400 [192] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b3_from_b2 - //SEG405 [197] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] + //SEG401 [193] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] b6_from_b2: jmp b6 - //SEG406 gen_chargen_sprite::@6 + //SEG402 gen_chargen_sprite::@6 b6: - //SEG407 [198] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] + //SEG403 [194] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] b3_from_b6: - //SEG408 [198] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG404 [194] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #1 sta c jmp b3 - //SEG409 [198] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] + //SEG405 [194] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] b3_from_b2: - //SEG410 [198] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG406 [194] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #0 sta c jmp b3 - //SEG411 gen_chargen_sprite::@3 + //SEG407 gen_chargen_sprite::@3 b3: - //SEG412 [199] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] + //SEG408 [195] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] b4_from_b3: - //SEG413 [199] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy - //SEG414 [199] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 + //SEG409 [195] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy + //SEG410 [195] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 ldx #0 - //SEG415 [199] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy - //SEG416 [199] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy + //SEG411 [195] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy + //SEG412 [195] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG417 [199] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] + //SEG413 [195] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] b4_from_b5: - //SEG418 [199] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy - //SEG419 [199] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy - //SEG420 [199] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy - //SEG421 [199] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy + //SEG414 [195] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy + //SEG415 [195] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy + //SEG416 [195] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy + //SEG417 [195] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy jmp b4 - //SEG422 gen_chargen_sprite::@4 + //SEG418 gen_chargen_sprite::@4 b4: - //SEG423 [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) -- vbuaa=vbuz1_rol_1 + //SEG419 [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) -- vbuaa=vbuz1_rol_1 lda s_gen asl - //SEG424 [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- vbuz1=vbuaa_bor_vbuz2 + //SEG420 [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- vbuz1=vbuaa_bor_vbuz2 ora c sta s_gen - //SEG425 [202] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy=_inc_vbuyy + //SEG421 [198] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG426 [203] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG422 [199] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b5_from_b4 jmp b7 - //SEG427 gen_chargen_sprite::@7 + //SEG423 gen_chargen_sprite::@7 b7: - //SEG428 [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG424 [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #0 sta (sprite),y - //SEG429 [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG425 [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #3 sta (sprite),y - //SEG430 [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG426 [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 lda s_gen ldy #6 sta (sprite),y - //SEG431 [207] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG427 [203] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) -- pbuz1=_inc_pbuz1 inc sprite bne !+ inc sprite+1 !: - //SEG432 [208] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] + //SEG428 [204] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] b5_from_b7: - //SEG433 [208] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy - //SEG434 [208] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 + //SEG429 [204] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy + //SEG430 [204] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 ldy #0 - //SEG435 [208] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 + //SEG431 [204] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 lda #0 sta s_gen jmp b5 - //SEG436 [208] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] + //SEG432 [204] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] b5_from_b4: - //SEG437 [208] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy - //SEG438 [208] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy - //SEG439 [208] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy + //SEG433 [204] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy + //SEG434 [204] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy + //SEG435 [204] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy jmp b5 - //SEG440 gen_chargen_sprite::@5 + //SEG436 gen_chargen_sprite::@5 b5: - //SEG441 [209] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx=_inc_vbuxx + //SEG437 [205] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG442 [210] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG438 [206] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b4_from_b5 jmp b8 - //SEG443 gen_chargen_sprite::@8 + //SEG439 gen_chargen_sprite::@8 b8: - //SEG444 [211] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) -- vbuz1=vbuz1_rol_1 + //SEG440 [207] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) -- vbuz1=vbuz1_rol_1 asl bits - //SEG445 [212] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG441 [208] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG446 [213] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG442 [209] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2_from_b8 jmp b9 - //SEG447 gen_chargen_sprite::@9 + //SEG443 gen_chargen_sprite::@9 b9: - //SEG448 [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG444 [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda sprite clc adc #6 @@ -22689,103 +22470,103 @@ gen_chargen_sprite: { bcc !+ inc sprite+1 !: - //SEG449 [215] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG445 [211] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG450 [216] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG446 [212] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1_from_b9 jmp b10 - //SEG451 gen_chargen_sprite::@10 + //SEG447 gen_chargen_sprite::@10 b10: - //SEG452 [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG448 [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG453 asm { cli } + //SEG449 asm { cli } cli jmp breturn - //SEG454 gen_chargen_sprite::@return + //SEG450 gen_chargen_sprite::@return breturn: - //SEG455 [219] return [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + //SEG451 [215] return [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) rts } -//SEG456 place_sprites +//SEG452 place_sprites place_sprites: { .const sprites_ptr = SCREEN+$3f8 .label spr_id = 2 .label spr_x = 3 .label col = 4 - //SEG457 [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG453 [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE - //SEG458 [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG454 [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_X - //SEG459 [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG455 [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_EXPAND_Y - //SEG460 [223] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] + //SEG456 [219] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] b1_from_place_sprites: - //SEG461 [223] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 + //SEG457 [219] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 lda #5 sta col - //SEG462 [223] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 + //SEG458 [219] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG463 [223] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 + //SEG459 [219] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 lda #$3c sta spr_x - //SEG464 [223] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 + //SEG460 [219] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 ldy #0 - //SEG465 [223] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 + //SEG461 [219] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 lda #$ff & sprites/$40 sta spr_id jmp b1 - //SEG466 [223] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] + //SEG462 [219] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] b1_from_b1: - //SEG467 [223] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy - //SEG468 [223] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy - //SEG469 [223] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy - //SEG470 [223] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy - //SEG471 [223] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy + //SEG463 [219] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy + //SEG464 [219] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy + //SEG465 [219] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy + //SEG466 [219] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy + //SEG467 [219] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy jmp b1 - //SEG472 place_sprites::@1 + //SEG468 place_sprites::@1 b1: - //SEG473 [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG469 [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 lda spr_id sta sprites_ptr,y - //SEG474 [225] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG470 [221] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- vbuz1=_inc_vbuz1 inc spr_id - //SEG475 [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG471 [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 lda spr_x sta SPRITES_XPOS,x - //SEG476 [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG472 [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #$50 sta SPRITES_YPOS,x - //SEG477 [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG473 [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 lda col sta SPRITES_COLS,y - //SEG478 [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG474 [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda spr_x clc adc #$20 sta spr_x - //SEG479 [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) -- vbuz1=vbuz1_bxor_vbuc1 + //SEG475 [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) -- vbuz1=vbuz1_bxor_vbuc1 lda col eor #7^5 sta col - //SEG480 [231] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) -- vbuxx=_inc_vbuxx + //SEG476 [227] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG481 [232] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuxx=_inc_vbuxx + //SEG477 [228] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG482 [233] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy=_inc_vbuyy + //SEG478 [229] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG483 [234] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG479 [230] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #7 bne b1_from_b1 jmp breturn - //SEG484 place_sprites::@return + //SEG480 place_sprites::@return breturn: - //SEG485 [235] return [ ] ( main:2::init:5::place_sprites:56 [ ] ) + //SEG481 [231] return [ ] ( main:2::init:5::place_sprites:54 [ ] ) rts } @@ -23142,11 +22923,9 @@ FINAL SYMBOL TABLE (byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0 (void()) anim() -(byte~) anim::$1 reg byte a 202.0 -(byte~) anim::$3 $3 zp ZP_BYTE:5 101.0 -(byte~) anim::$4 reg byte a 202.0 -(byte~) anim::$6 reg byte a 202.0 -(byte~) anim::$7 reg byte a 202.0 +(byte~) anim::$2 $2 zp ZP_BYTE:5 101.0 +(byte~) anim::$3 reg byte a 202.0 +(byte~) anim::$5 reg byte a 202.0 (label) anim::@1 (label) anim::@14 (label) anim::@15 @@ -23160,27 +22939,27 @@ FINAL SYMBOL TABLE (label) anim::@return (byte) anim::j (byte) anim::j#1 j zp ZP_BYTE:7 151.5 -(byte) anim::j#2 j zp ZP_BYTE:7 10.1 +(byte) anim::j#2 j zp ZP_BYTE:7 11.222222222222221 (byte) anim::j2 (byte) anim::j2#1 reg byte a 202.0 (byte) anim::j2#2 j2 zp ZP_BYTE:6 67.33333333333333 -(byte) anim::j2#3 j2 zp ZP_BYTE:6 22.444444444444443 +(byte) anim::j2#3 j2 zp ZP_BYTE:6 25.25 (word) anim::x (word) anim::x#0 x zp ZP_WORD:8 75.75 (byte) anim::x_msb -(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.0 -(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 67.33333333333333 +(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.75 +(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 101.0 (byte) anim::xidx (byte) anim::xidx#0 xidx zp ZP_BYTE:4 2.0 (byte) anim::xidx#1 xidx zp ZP_BYTE:4 202.0 (byte) anim::xidx#2 xidx zp ZP_BYTE:4 202.0 -(byte) anim::xidx#3 xidx zp ZP_BYTE:4 30.5 +(byte) anim::xidx#3 xidx zp ZP_BYTE:4 38.125 (byte) anim::xidx#5 xidx zp ZP_BYTE:4 33.666666666666664 (byte) anim::yidx (byte) anim::yidx#0 reg byte y 4.0 (byte) anim::yidx#1 reg byte y 202.0 (byte) anim::yidx#2 reg byte y 202.0 -(byte) anim::yidx#3 reg byte y 21.78571428571429 +(byte) anim::yidx#3 reg byte y 25.416666666666664 (byte) anim::yidx#6 reg byte y 60.599999999999994 (void()) clear_screen() (label) clear_screen::@1 @@ -23196,8 +22975,8 @@ FINAL SYMBOL TABLE (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) (word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:12 4.0 (word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:12 4.0 -(byte~) gen_chargen_sprite::$4 reg byte a 2002.0 -(byte~) gen_chargen_sprite::$7 reg byte a 20002.0 +(byte~) gen_chargen_sprite::$3 reg byte a 2002.0 +(byte~) gen_chargen_sprite::$6 reg byte a 20002.0 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@10 (label) gen_chargen_sprite::@2 @@ -23369,15 +23148,13 @@ FINAL SYMBOL TABLE (byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 4.666666666666666 (byte*) progress_cursor (byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0 -(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.4285714285714284 -(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7037037037037037 +(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 +(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7307692307692306 (byte) progress_idx (byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0 -(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.142857142857143 +(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.5 (byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.5652173913043479 (void()) progress_inc() -(byte~) progress_inc::$2 reg byte a 4.0 -(byte~) progress_inc::$3 reg byte a 4.0 (label) progress_inc::@1 (label) progress_inc::@2 (label) progress_inc::@return @@ -23407,11 +23184,11 @@ FINAL SYMBOL TABLE (label) sinFAC::@return (byte) sin_idx_x (byte) sin_idx_x#11 sin_idx_x zp ZP_BYTE:2 1.4444444444444446 -(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5172413793103449 +(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5555555555555556 (byte) sin_idx_x#3 sin_idx_x zp ZP_BYTE:2 2.0 (byte) sin_idx_y (byte) sin_idx_y#11 sin_idx_y zp ZP_BYTE:3 2.6 -(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.45454545454545453 +(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.4838709677419355 (byte) sin_idx_y#3 sin_idx_y zp ZP_BYTE:3 2.0 (byte) sinlen_x (const byte) sinlen_x#0 sinlen_x = (byte/word/signed word) 221 @@ -23429,7 +23206,7 @@ FINAL SYMBOL TABLE zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] -zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$3 ] +zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$2 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ] reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] @@ -23442,19 +23219,15 @@ reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] -reg byte a [ anim::$1 ] -reg byte a [ anim::$4 ] -reg byte a [ anim::$6 ] -reg byte a [ anim::$7 ] +reg byte a [ anim::$3 ] +reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] reg byte a [ gen_sintab::$24 ] -reg byte a [ progress_inc::$2 ] -reg byte a [ progress_inc::$3 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] reg byte x [ gen_chargen_sprite::ch#0 ] -reg byte a [ gen_chargen_sprite::$4 ] -reg byte a [ gen_chargen_sprite::$7 ] +reg byte a [ gen_chargen_sprite::$3 ] +reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ place_sprites::j2#1 ] FINAL CODE @@ -23498,7 +23271,7 @@ FINAL CODE //SEG9 main main: { //SEG10 [5] call init param-assignment [ ] ( main:2 [ ] ) - //SEG11 [48] phi from main to init [phi:main->init] + //SEG11 [46] phi from main to init [phi:main->init] jsr init //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] //SEG13 [6] phi (byte) sin_idx_y#13 = (byte/signed byte/word/signed word) 0 [phi:main->main::@2#0] -- vbuz1=vbuc1 @@ -23528,7 +23301,7 @@ main: { } //SEG28 anim anim: { - .label _3 = 5 + .label _2 = 5 .label xidx = 4 .label x = 8 .label x_msb = 5 @@ -23561,241 +23334,239 @@ anim: { //SEG43 [15] phi (byte) anim::xidx#3 = (byte) anim::xidx#5 [phi:anim::@3->anim::@1#4] -- register_copy //SEG44 anim::@1 b1: - //SEG45 [16] (byte~) anim::$1 ← (const byte[]) sintab_x#0 *idx (byte) anim::xidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::$1 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG45 [16] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + *((const byte[]) sintab_x#0 + (byte) anim::xidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) -- vwuz1=vwuc1_plus_pbuc2_derefidx_vbuz2 ldx xidx lda sintab_x,x - //SEG46 [17] (word) anim::x#0 ← ((word))(byte/signed byte/word/signed word) 30 + (byte~) anim::$1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::x_msb#2 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 ] ) -- vwuz1=vwuc1_plus_vbuaa clc adc #<$1e sta x lda #>$1e adc #0 sta x+1 - //SEG47 [18] (byte~) anim::$3 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 ] ) -- vbuz1=vbuz1_rol_1 - asl _3 - //SEG48 [19] (byte~) anim::$4 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$3 anim::$4 ] ) -- vbuaa=_hi_vwuz1 - //SEG49 [20] (byte) anim::x_msb#1 ← (byte~) anim::$3 | (byte~) anim::$4 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz1_bor_vbuaa + //SEG46 [17] (byte~) anim::$2 ← (byte) anim::x_msb#2 << (byte/signed byte/word/signed word) 1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 ] ) -- vbuz1=vbuz1_rol_1 + asl _2 + //SEG47 [18] (byte~) anim::$3 ← > (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x#0 anim::$2 anim::$3 ] ) -- vbuaa=_hi_vwuz1 + //SEG48 [19] (byte) anim::x_msb#1 ← (byte~) anim::$2 | (byte~) anim::$3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::x#0 ] ) -- vbuz1=vbuz1_bor_vbuaa ora x_msb sta x_msb - //SEG50 [21] (byte~) anim::$6 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$6 ] ) -- vbuaa=_lo_vwuz1 + //SEG49 [20] (byte~) anim::$5 ← < (word) anim::x#0 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$5 ] ) -- vbuaa=_lo_vwuz1 lda x - //SEG51 [22] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$6 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuaa + //SEG50 [21] *((const byte*) SPRITES_XPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$5 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuaa ldx j2 sta SPRITES_XPOS,x - //SEG52 [23] (byte~) anim::$7 ← (const byte[]) sintab_y#0 *idx (byte) anim::yidx#3 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::$7 ] ) -- vbuaa=pbuc1_derefidx_vbuyy + //SEG51 [22] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← *((const byte[]) sintab_y#0 + (byte) anim::yidx#3) [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuyy lda sintab_y,y - //SEG53 [24] *((const byte*) SPRITES_YPOS#0 + (byte) anim::j2#3) ← (byte~) anim::$7 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#3 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 ] ) -- pbuc1_derefidx_vbuz1=vbuaa sta SPRITES_YPOS,x - //SEG54 [25] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG52 [23] (byte) anim::xidx#1 ← (byte) anim::xidx#3 + (byte/signed byte/word/signed word) 10 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda xidx clc adc #$a sta xidx - //SEG55 [26] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG53 [24] if((byte) anim::xidx#1<(const byte) sinlen_x#0) goto anim::@2 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#1 ] ) -- vbuz1_lt_vbuc1_then_la1 cmp #sinlen_x bcc b2 - //SEG56 anim::@6 - //SEG57 [27] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 + //SEG54 anim::@6 + //SEG55 [25] (byte) anim::xidx#2 ← (byte) anim::xidx#1 - (const byte) sinlen_x#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::yidx#3 anim::j#2 anim::x_msb#1 anim::xidx#2 ] ) -- vbuz1=vbuz1_minus_vbuc1 sec sbc #sinlen_x sta xidx - //SEG58 [28] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] - //SEG59 [28] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy - //SEG60 anim::@2 + //SEG56 [26] phi from anim::@1 anim::@6 to anim::@2 [phi:anim::@1/anim::@6->anim::@2] + //SEG57 [26] phi (byte) anim::xidx#5 = (byte) anim::xidx#1 [phi:anim::@1/anim::@6->anim::@2#0] -- register_copy + //SEG58 anim::@2 b2: - //SEG61 [29] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy=vbuyy_plus_vbuc1 + //SEG59 [27] (byte) anim::yidx#1 ← (byte) anim::yidx#3 + (byte/signed byte/word/signed word) 8 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy=vbuyy_plus_vbuc1 tya clc adc #8 tay - //SEG62 [30] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy_lt_vbuc1_then_la1 + //SEG60 [28] if((byte) anim::yidx#1<(const byte) sinlen_y#0) goto anim::@3 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#1 ] ) -- vbuyy_lt_vbuc1_then_la1 cpy #sinlen_y bcc b3 - //SEG63 anim::@7 - //SEG64 [31] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) -- vbuyy=vbuyy_minus_vbuc1 + //SEG61 anim::@7 + //SEG62 [29] (byte) anim::yidx#2 ← (byte) anim::yidx#1 - (const byte) sinlen_y#0 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j2#3 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#2 ] ) -- vbuyy=vbuyy_minus_vbuc1 tya sec sbc #sinlen_y tay - //SEG65 [32] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] - //SEG66 [32] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy - //SEG67 anim::@3 + //SEG63 [30] phi from anim::@2 anim::@7 to anim::@3 [phi:anim::@2/anim::@7->anim::@3] + //SEG64 [30] phi (byte) anim::yidx#6 = (byte) anim::yidx#1 [phi:anim::@2/anim::@7->anim::@3#0] -- register_copy + //SEG65 anim::@3 b3: - //SEG68 [33] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) -- vbuaa=_dec_vbuz1 + //SEG66 [31] (byte) anim::j2#1 ← -- (byte) anim::j2#3 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::yidx#6 anim::j2#1 ] ) -- vbuaa=_dec_vbuz1 lda j2 sec sbc #1 - //SEG69 [34] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) -- vbuz1=_dec_vbuaa + //SEG67 [32] (byte) anim::j2#2 ← -- (byte) anim::j2#1 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::j#2 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 ] ) -- vbuz1=_dec_vbuaa sta j2 dec j2 - //SEG70 [35] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG68 [33] (byte) anim::j#1 ← ++ (byte) anim::j#2 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1=_inc_vbuz1 inc j - //SEG71 [36] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG69 [34] if((byte) anim::j#1!=(byte/signed byte/word/signed word) 7) goto anim::@1 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 anim::xidx#5 anim::x_msb#1 anim::j2#2 anim::yidx#6 anim::j#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda j cmp #7 bne b1 - //SEG72 anim::@8 - //SEG73 [37] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=vbuz1 + //SEG70 anim::@8 + //SEG71 [35] *((const byte*) SPRITES_XMSB#0) ← (byte) anim::x_msb#1 [ sin_idx_x#13 sin_idx_y#13 ] ( main:2::anim:9 [ sin_idx_x#13 sin_idx_y#13 ] ) -- _deref_pbuc1=vbuz1 lda x_msb sta SPRITES_XMSB - //SEG74 [38] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1=_inc_vbuz1 + //SEG72 [36] (byte) sin_idx_x#3 ← ++ (byte) sin_idx_x#13 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1=_inc_vbuz1 inc sin_idx_x - //SEG75 [39] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG73 [37] if((byte) sin_idx_x#3<(const byte) sinlen_x#0) goto anim::@14 [ sin_idx_y#13 sin_idx_x#3 ] ( main:2::anim:9 [ sin_idx_y#13 sin_idx_x#3 ] ) -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_x cmp #sinlen_x bcc b4 - //SEG76 [40] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] - //SEG77 [40] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 + //SEG74 [38] phi from anim::@8 to anim::@4 [phi:anim::@8->anim::@4] + //SEG75 [38] phi (byte) sin_idx_x#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@8->anim::@4#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_x - //SEG78 anim::@4 + //SEG76 anim::@4 b4: - //SEG79 [41] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1=_inc_vbuz1 + //SEG77 [39] (byte) sin_idx_y#3 ← ++ (byte) sin_idx_y#13 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1=_inc_vbuz1 inc sin_idx_y - //SEG80 [42] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG78 [40] if((byte) sin_idx_y#3<(const byte) sinlen_y#0) goto anim::@15 [ sin_idx_x#11 sin_idx_y#3 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#3 ] ) -- vbuz1_lt_vbuc1_then_la1 lda sin_idx_y cmp #sinlen_y bcc b5 - //SEG81 [43] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] - //SEG82 [43] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 + //SEG79 [41] phi from anim::@4 to anim::@5 [phi:anim::@4->anim::@5] + //SEG80 [41] phi (byte) sin_idx_y#11 = (byte/signed byte/word/signed word) 0 [phi:anim::@4->anim::@5#0] -- vbuz1=vbuc1 lda #0 sta sin_idx_y - //SEG83 anim::@5 + //SEG81 anim::@5 b5: - //SEG84 [44] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 + //SEG82 [42] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) -- _deref_pbuc1=_dec__deref_pbuc1 dec BORDERCOL - //SEG85 anim::@return - //SEG86 [45] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) + //SEG83 anim::@return + //SEG84 [43] return [ sin_idx_x#11 sin_idx_y#11 ] ( main:2::anim:9 [ sin_idx_x#11 sin_idx_y#11 ] ) rts - //SEG87 [46] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] - //SEG88 anim::@15 - //SEG89 [43] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] - //SEG90 [43] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy - //SEG91 [47] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] - //SEG92 anim::@14 - //SEG93 [40] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] - //SEG94 [40] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy + //SEG85 [44] phi from anim::@4 to anim::@15 [phi:anim::@4->anim::@15] + //SEG86 anim::@15 + //SEG87 [41] phi from anim::@15 to anim::@5 [phi:anim::@15->anim::@5] + //SEG88 [41] phi (byte) sin_idx_y#11 = (byte) sin_idx_y#3 [phi:anim::@15->anim::@5#0] -- register_copy + //SEG89 [45] phi from anim::@8 to anim::@14 [phi:anim::@8->anim::@14] + //SEG90 anim::@14 + //SEG91 [38] phi from anim::@14 to anim::@4 [phi:anim::@14->anim::@4] + //SEG92 [38] phi (byte) sin_idx_x#11 = (byte) sin_idx_x#3 [phi:anim::@14->anim::@4#0] -- register_copy } -//SEG95 init +//SEG93 init init: { - //SEG96 [49] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG97 [70] phi from init to clear_screen [phi:init->clear_screen] + //SEG94 [47] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG95 [68] phi from init to clear_screen [phi:init->clear_screen] jsr clear_screen - //SEG98 [50] phi from init to init::@1 [phi:init->init::@1] - //SEG99 [50] phi (byte) init::i#2 = (byte/signed byte/word/signed word) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 + //SEG96 [48] phi from init to init::@1 [phi:init->init::@1] + //SEG97 [48] phi (byte) init::i#2 = (byte/signed byte/word/signed word) 0 [phi:init->init::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG100 [50] phi from init::@1 to init::@1 [phi:init::@1->init::@1] - //SEG101 [50] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy - //SEG102 init::@1 + //SEG98 [48] phi from init::@1 to init::@1 [phi:init::@1->init::@1] + //SEG99 [48] phi (byte) init::i#2 = (byte) init::i#1 [phi:init::@1->init::@1#0] -- register_copy + //SEG100 init::@1 b1: - //SEG103 [51] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG101 [49] *((const byte*) COLS#0 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 0 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #0 sta COLS,x - //SEG104 [52] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG102 [50] *((const byte*) COLS#0+(byte/signed byte/word/signed word) 40 + (byte) init::i#2) ← (byte/signed byte/word/signed word) 11 [ init::i#2 ] ( main:2::init:5 [ init::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #$b sta COLS+$28,x - //SEG105 [53] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG103 [51] (byte) init::i#1 ← ++ (byte) init::i#2 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG106 [54] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG104 [52] if((byte) init::i#1!=(byte/signed byte/word/signed word) 40) goto init::@1 [ init::i#1 ] ( main:2::init:5 [ init::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #$28 bne b1 - //SEG107 [55] phi from init::@1 to init::@2 [phi:init::@1->init::@2] - //SEG108 init::@2 - //SEG109 [56] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG105 [53] phi from init::@1 to init::@2 [phi:init::@1->init::@2] + //SEG106 init::@2 + //SEG107 [54] call place_sprites param-assignment [ ] ( main:2::init:5 [ ] ) jsr place_sprites - //SEG110 [57] phi from init::@2 to init::@4 [phi:init::@2->init::@4] - //SEG111 init::@4 - //SEG112 [58] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG113 [178] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] + //SEG108 [55] phi from init::@2 to init::@4 [phi:init::@2->init::@4] + //SEG109 init::@4 + //SEG110 [56] call gen_sprites param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG111 [174] phi from init::@4 to gen_sprites [phi:init::@4->gen_sprites] jsr gen_sprites - //SEG114 [59] phi from init::@4 to init::@5 [phi:init::@4->init::@5] - //SEG115 init::@5 - //SEG116 [60] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - //SEG117 [176] phi from init::@5 to progress_init [phi:init::@5->progress_init] - //SEG118 [176] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 + //SEG112 [57] phi from init::@4 to init::@5 [phi:init::@4->init::@5] + //SEG113 init::@5 + //SEG114 [58] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + //SEG115 [172] phi from init::@5 to progress_init [phi:init::@5->progress_init] + //SEG116 [172] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0 [phi:init::@5->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN sta progress_init.line+1 jsr progress_init - //SEG119 [61] phi from init::@5 to init::@6 [phi:init::@5->init::@6] - //SEG120 init::@6 - //SEG121 [62] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG122 [76] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] - //SEG123 [76] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 + //SEG117 [59] phi from init::@5 to init::@6 [phi:init::@5->init::@6] + //SEG118 init::@6 + //SEG119 [60] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG120 [74] phi from init::@6 to gen_sintab [phi:init::@6->gen_sintab] + //SEG121 [74] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_x#0 [phi:init::@6->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_x sta gen_sintab.sintab+1 - //SEG124 [76] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 + //SEG122 [74] phi (byte) gen_sintab::length#10 = (const byte) sinlen_x#0 [phi:init::@6->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_x sta gen_sintab.length - //SEG125 [76] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 + //SEG123 [74] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 0 [phi:init::@6->gen_sintab#2] -- vbuz1=vbuc1 lda #0 sta gen_sintab.min - //SEG126 [76] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 + //SEG124 [74] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 255 [phi:init::@6->gen_sintab#3] -- vbuxx=vbuc1 ldx #$ff jsr gen_sintab - //SEG127 [63] phi from init::@6 to init::@7 [phi:init::@6->init::@7] - //SEG128 init::@7 - //SEG129 [64] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) - //SEG130 [176] phi from init::@7 to progress_init [phi:init::@7->progress_init] - //SEG131 [176] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 + //SEG125 [61] phi from init::@6 to init::@7 [phi:init::@6->init::@7] + //SEG126 init::@7 + //SEG127 [62] call progress_init param-assignment [ progress_init::line#2 ] ( main:2::init:5 [ progress_init::line#2 ] ) + //SEG128 [172] phi from init::@7 to progress_init [phi:init::@7->progress_init] + //SEG129 [172] phi (byte*) progress_init::line#2 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word) 40 [phi:init::@7->progress_init#0] -- pbuz1=pbuc1 lda #SCREEN+$28 sta progress_init.line+1 jsr progress_init - //SEG132 [65] phi from init::@7 to init::@8 [phi:init::@7->init::@8] - //SEG133 init::@8 - //SEG134 [66] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG135 [76] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] - //SEG136 [76] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 + //SEG130 [63] phi from init::@7 to init::@8 [phi:init::@7->init::@8] + //SEG131 init::@8 + //SEG132 [64] call gen_sintab param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG133 [74] phi from init::@8 to gen_sintab [phi:init::@8->gen_sintab] + //SEG134 [74] phi (byte*) gen_sintab::sintab#12 = (const byte[]) sintab_y#0 [phi:init::@8->gen_sintab#0] -- pbuz1=pbuc1 lda #sintab_y sta gen_sintab.sintab+1 - //SEG137 [76] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 + //SEG135 [74] phi (byte) gen_sintab::length#10 = (const byte) sinlen_y#0 [phi:init::@8->gen_sintab#1] -- vbuz1=vbuc1 lda #sinlen_y sta gen_sintab.length - //SEG138 [76] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 + //SEG136 [74] phi (byte) gen_sintab::min#2 = (byte/signed byte/word/signed word) 50 [phi:init::@8->gen_sintab#2] -- vbuz1=vbuc1 lda #$32 sta gen_sintab.min - //SEG139 [76] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 + //SEG137 [74] phi (byte) gen_sintab::max#2 = (byte/word/signed word) 208 [phi:init::@8->gen_sintab#3] -- vbuxx=vbuc1 ldx #$d0 jsr gen_sintab - //SEG140 [67] phi from init::@8 to init::@9 [phi:init::@8->init::@9] - //SEG141 init::@9 - //SEG142 [68] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) - //SEG143 [70] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] + //SEG138 [65] phi from init::@8 to init::@9 [phi:init::@8->init::@9] + //SEG139 init::@9 + //SEG140 [66] call clear_screen param-assignment [ ] ( main:2::init:5 [ ] ) + //SEG141 [68] phi from init::@9 to clear_screen [phi:init::@9->clear_screen] jsr clear_screen - //SEG144 init::@return - //SEG145 [69] return [ ] ( main:2::init:5 [ ] ) + //SEG142 init::@return + //SEG143 [67] return [ ] ( main:2::init:5 [ ] ) rts } -//SEG146 clear_screen +//SEG144 clear_screen clear_screen: { .label sc = 8 - //SEG147 [71] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] - //SEG148 [71] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 + //SEG145 [69] phi from clear_screen to clear_screen::@1 [phi:clear_screen->clear_screen::@1] + //SEG146 [69] phi (byte*) clear_screen::sc#2 = (const byte*) SCREEN#0 [phi:clear_screen->clear_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta sc+1 - //SEG149 [71] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] - //SEG150 [71] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy - //SEG151 clear_screen::@1 + //SEG147 [69] phi from clear_screen::@1 to clear_screen::@1 [phi:clear_screen::@1->clear_screen::@1] + //SEG148 [69] phi (byte*) clear_screen::sc#2 = (byte*) clear_screen::sc#1 [phi:clear_screen::@1->clear_screen::@1#0] -- register_copy + //SEG149 clear_screen::@1 b1: - //SEG152 [72] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG150 [70] *((byte*) clear_screen::sc#2) ← (byte) ' ' [ clear_screen::sc#2 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#2 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #' ' sta (sc),y - //SEG153 [73] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG151 [71] (byte*) clear_screen::sc#1 ← ++ (byte*) clear_screen::sc#2 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) -- pbuz1=_inc_pbuz1 inc sc bne !+ inc sc+1 !: - //SEG154 [74] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:49 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:68 [ clear_screen::sc#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG152 [72] if((byte*) clear_screen::sc#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto clear_screen::@1 [ clear_screen::sc#1 ] ( main:2::init:5::clear_screen:47 [ clear_screen::sc#1 ] main:2::init:5::clear_screen:66 [ clear_screen::sc#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda sc+1 cmp #>SCREEN+$3e8 bcc b1 @@ -23804,11 +23575,11 @@ clear_screen: { cmp #setFAC] - //SEG161 [162] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy + //SEG157 [76] call setFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG158 [158] phi from gen_sintab to setFAC [phi:gen_sintab->setFAC] + //SEG159 [158] phi (word) setFAC::w#5 = (word) setFAC::w#0 [phi:gen_sintab->setFAC#0] -- register_copy jsr setFAC - //SEG162 [79] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] - //SEG163 gen_sintab::@3 - //SEG164 [80] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG160 [77] phi from gen_sintab to gen_sintab::@3 [phi:gen_sintab->gen_sintab::@3] + //SEG161 gen_sintab::@3 + //SEG162 [78] call setARGtoFAC param-assignment [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) jsr setARGtoFAC - //SEG165 gen_sintab::@4 - //SEG166 asm { lda#0ldx#0ldy#0 } + //SEG163 gen_sintab::@4 + //SEG164 asm { lda#0ldx#0ldy#0 } lda #0 tax tay - //SEG167 [82] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 + //SEG165 [80] (word) setFAC::w#1 ← ((word)) (byte) gen_sintab::min#2 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 setFAC::w#1 progress_init::line#2 ] ) -- vwuz1=_word_vbuz2 lda min sta setFAC.w txa sta setFAC.w+1 - //SEG168 [83] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG169 [162] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] - //SEG170 [162] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy + //SEG166 [81] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG167 [158] phi from gen_sintab::@4 to setFAC [phi:gen_sintab::@4->setFAC] + //SEG168 [158] phi (word) setFAC::w#5 = (word) setFAC::w#1 [phi:gen_sintab::@4->setFAC#0] -- register_copy jsr setFAC - //SEG171 [84] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] - //SEG172 gen_sintab::@5 - //SEG173 [85] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG174 [167] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] - //SEG175 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG169 [82] phi from gen_sintab::@4 to gen_sintab::@5 [phi:gen_sintab::@4->gen_sintab::@5] + //SEG170 gen_sintab::@5 + //SEG171 [83] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG172 [163] phi from gen_sintab::@5 to setMEMtoFAC [phi:gen_sintab::@5->setMEMtoFAC] + //SEG173 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@5->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG176 [86] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] - //SEG177 gen_sintab::@6 - //SEG178 [87] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG174 [84] phi from gen_sintab::@5 to gen_sintab::@6 [phi:gen_sintab::@5->gen_sintab::@6] + //SEG175 gen_sintab::@6 + //SEG176 [85] call subFACfromARG param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) jsr subFACfromARG - //SEG179 [88] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] - //SEG180 gen_sintab::@7 - //SEG181 [89] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG182 [167] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] - //SEG183 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG177 [86] phi from gen_sintab::@6 to gen_sintab::@7 [phi:gen_sintab::@6->gen_sintab::@7] + //SEG178 gen_sintab::@7 + //SEG179 [87] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG180 [163] phi from gen_sintab::@7 to setMEMtoFAC [phi:gen_sintab::@7->setMEMtoFAC] + //SEG181 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@7->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG184 [90] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] - //SEG185 gen_sintab::@8 - //SEG186 [91] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG187 [162] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] - //SEG188 [162] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 + //SEG182 [88] phi from gen_sintab::@7 to gen_sintab::@8 [phi:gen_sintab::@7->gen_sintab::@8] + //SEG183 gen_sintab::@8 + //SEG184 [89] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG185 [158] phi from gen_sintab::@8 to setFAC [phi:gen_sintab::@8->setFAC] + //SEG186 [158] phi (word) setFAC::w#5 = (byte/signed byte/word/signed word) 2 [phi:gen_sintab::@8->setFAC#0] -- vwuz1=vbuc1 lda #2 sta setFAC.w lda #0 sta setFAC.w+1 jsr setFAC - //SEG189 [92] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] - //SEG190 gen_sintab::@9 - //SEG191 [93] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG192 [157] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] - //SEG193 [157] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG187 [90] phi from gen_sintab::@8 to gen_sintab::@9 [phi:gen_sintab::@8->gen_sintab::@9] + //SEG188 gen_sintab::@9 + //SEG189 [91] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG190 [153] phi from gen_sintab::@9 to divMEMbyFAC [phi:gen_sintab::@9->divMEMbyFAC] + //SEG191 [153] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@9->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_amp sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG194 [94] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] - //SEG195 gen_sintab::@10 - //SEG196 [95] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG197 [167] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] - //SEG198 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG192 [92] phi from gen_sintab::@9 to gen_sintab::@10 [phi:gen_sintab::@9->gen_sintab::@10] + //SEG193 gen_sintab::@10 + //SEG194 [93] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG195 [163] phi from gen_sintab::@10 to setMEMtoFAC [phi:gen_sintab::@10->setMEMtoFAC] + //SEG196 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@10->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_amp sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG199 [96] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] - //SEG200 gen_sintab::@11 - //SEG201 [97] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG202 [139] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] - //SEG203 [139] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@11->addMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG197 [94] phi from gen_sintab::@10 to gen_sintab::@11 [phi:gen_sintab::@10->gen_sintab::@11] + //SEG198 gen_sintab::@11 + //SEG199 [95] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG200 [135] phi from gen_sintab::@11 to addMEMtoFAC [phi:gen_sintab::@11->addMEMtoFAC] + //SEG201 [135] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@11->addMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta addMEMtoFAC.mem+1 jsr addMEMtoFAC - //SEG204 [98] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] - //SEG205 gen_sintab::@12 - //SEG206 [99] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) - //SEG207 [167] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] - //SEG208 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG202 [96] phi from gen_sintab::@11 to gen_sintab::@12 [phi:gen_sintab::@11->gen_sintab::@12] + //SEG203 gen_sintab::@12 + //SEG204 [97] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG205 [163] phi from gen_sintab::@12 to setMEMtoFAC [phi:gen_sintab::@12->setMEMtoFAC] + //SEG206 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@12->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG209 [100] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] - //SEG210 [100] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy - //SEG211 [100] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 + //SEG207 [98] phi from gen_sintab::@12 to gen_sintab::@1 [phi:gen_sintab::@12->gen_sintab::@1] + //SEG208 [98] phi (byte*) progress_cursor#34 = (byte*) progress_init::line#2 [phi:gen_sintab::@12->gen_sintab::@1#0] -- register_copy + //SEG209 [98] phi (byte) progress_idx#34 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG212 [100] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 + //SEG210 [98] phi (byte) gen_sintab::i#10 = (byte/signed byte/word/signed word) 0 [phi:gen_sintab::@12->gen_sintab::@1#2] -- vbuz1=vbuc1 sta i - //SEG213 [100] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] - //SEG214 [100] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy - //SEG215 [100] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy - //SEG216 [100] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy - //SEG217 gen_sintab::@1 + //SEG211 [98] phi from gen_sintab::@23 to gen_sintab::@1 [phi:gen_sintab::@23->gen_sintab::@1] + //SEG212 [98] phi (byte*) progress_cursor#34 = (byte*) progress_cursor#11 [phi:gen_sintab::@23->gen_sintab::@1#0] -- register_copy + //SEG213 [98] phi (byte) progress_idx#34 = (byte) progress_idx#12 [phi:gen_sintab::@23->gen_sintab::@1#1] -- register_copy + //SEG214 [98] phi (byte) gen_sintab::i#10 = (byte) gen_sintab::i#1 [phi:gen_sintab::@23->gen_sintab::@1#2] -- register_copy + //SEG215 gen_sintab::@1 b1: - //SEG218 [101] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) -- vwuz1=_word_vbuz2 + //SEG216 [99] (word) setFAC::w#3 ← ((word)) (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#3 ] ) -- vwuz1=_word_vbuz2 lda i sta setFAC.w lda #0 sta setFAC.w+1 - //SEG219 [102] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG220 [162] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] - //SEG221 [162] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy + //SEG217 [100] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG218 [158] phi from gen_sintab::@1 to setFAC [phi:gen_sintab::@1->setFAC] + //SEG219 [158] phi (word) setFAC::w#5 = (word) setFAC::w#3 [phi:gen_sintab::@1->setFAC#0] -- register_copy jsr setFAC - //SEG222 [103] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] - //SEG223 gen_sintab::@14 - //SEG224 [104] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG225 [150] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] - //SEG226 [150] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG220 [101] phi from gen_sintab::@1 to gen_sintab::@14 [phi:gen_sintab::@1->gen_sintab::@14] + //SEG221 gen_sintab::@14 + //SEG222 [102] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG223 [146] phi from gen_sintab::@14 to mulFACbyMEM [phi:gen_sintab::@14->mulFACbyMEM] + //SEG224 [146] phi (byte*) mulFACbyMEM::mem#2 = (const byte*) gen_sintab::f_2pi#0 [phi:gen_sintab::@14->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_2pi sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG227 [105] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] - //SEG228 gen_sintab::@15 - //SEG229 [106] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG230 [167] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] - //SEG231 [167] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG225 [103] phi from gen_sintab::@14 to gen_sintab::@15 [phi:gen_sintab::@14->gen_sintab::@15] + //SEG226 gen_sintab::@15 + //SEG227 [104] call setMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG228 [163] phi from gen_sintab::@15 to setMEMtoFAC [phi:gen_sintab::@15->setMEMtoFAC] + //SEG229 [163] phi (byte*) setMEMtoFAC::mem#5 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@15->setMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_i sta setMEMtoFAC.mem+1 jsr setMEMtoFAC - //SEG232 gen_sintab::@16 - //SEG233 [107] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) -- vwuz1=_word_vbuz2 + //SEG230 gen_sintab::@16 + //SEG231 [105] (word) setFAC::w#4 ← ((word)) (byte) gen_sintab::length#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 setFAC::w#4 ] ) -- vwuz1=_word_vbuz2 lda length sta setFAC.w lda #0 sta setFAC.w+1 - //SEG234 [108] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG235 [162] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] - //SEG236 [162] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy + //SEG232 [106] call setFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG233 [158] phi from gen_sintab::@16 to setFAC [phi:gen_sintab::@16->setFAC] + //SEG234 [158] phi (word) setFAC::w#5 = (word) setFAC::w#4 [phi:gen_sintab::@16->setFAC#0] -- register_copy jsr setFAC - //SEG237 [109] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] - //SEG238 gen_sintab::@17 - //SEG239 [110] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG240 [157] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] - //SEG241 [157] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 + //SEG235 [107] phi from gen_sintab::@16 to gen_sintab::@17 [phi:gen_sintab::@16->gen_sintab::@17] + //SEG236 gen_sintab::@17 + //SEG237 [108] call divMEMbyFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG238 [153] phi from gen_sintab::@17 to divMEMbyFAC [phi:gen_sintab::@17->divMEMbyFAC] + //SEG239 [153] phi (byte*) divMEMbyFAC::mem#2 = (const byte[]) gen_sintab::f_i#0 [phi:gen_sintab::@17->divMEMbyFAC#0] -- pbuz1=pbuc1 lda #f_i sta divMEMbyFAC.mem+1 jsr divMEMbyFAC - //SEG242 [111] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] - //SEG243 gen_sintab::@18 - //SEG244 [112] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG240 [109] phi from gen_sintab::@17 to gen_sintab::@18 [phi:gen_sintab::@17->gen_sintab::@18] + //SEG241 gen_sintab::@18 + //SEG242 [110] call sinFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) jsr sinFAC - //SEG245 [113] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] - //SEG246 gen_sintab::@19 - //SEG247 [114] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG248 [150] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] - //SEG249 [150] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 + //SEG243 [111] phi from gen_sintab::@18 to gen_sintab::@19 [phi:gen_sintab::@18->gen_sintab::@19] + //SEG244 gen_sintab::@19 + //SEG245 [112] call mulFACbyMEM param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG246 [146] phi from gen_sintab::@19 to mulFACbyMEM [phi:gen_sintab::@19->mulFACbyMEM] + //SEG247 [146] phi (byte*) mulFACbyMEM::mem#2 = (const byte[]) gen_sintab::f_amp#0 [phi:gen_sintab::@19->mulFACbyMEM#0] -- pbuz1=pbuc1 lda #f_amp sta mulFACbyMEM.mem+1 jsr mulFACbyMEM - //SEG250 [115] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] - //SEG251 gen_sintab::@20 - //SEG252 [116] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG253 [139] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] - //SEG254 [139] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@20->addMEMtoFAC#0] -- pbuz1=pbuc1 + //SEG248 [113] phi from gen_sintab::@19 to gen_sintab::@20 [phi:gen_sintab::@19->gen_sintab::@20] + //SEG249 gen_sintab::@20 + //SEG250 [114] call addMEMtoFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG251 [135] phi from gen_sintab::@20 to addMEMtoFAC [phi:gen_sintab::@20->addMEMtoFAC] + //SEG252 [135] phi (byte*) addMEMtoFAC::mem#2 = (const byte[]) gen_sintab::f_min#0 [phi:gen_sintab::@20->addMEMtoFAC#0] -- pbuz1=pbuc1 lda #f_min sta addMEMtoFAC.mem+1 jsr addMEMtoFAC - //SEG255 [117] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] - //SEG256 gen_sintab::@21 - //SEG257 [118] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + //SEG253 [115] phi from gen_sintab::@20 to gen_sintab::@21 [phi:gen_sintab::@20->gen_sintab::@21] + //SEG254 gen_sintab::@21 + //SEG255 [116] call getFAC param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) jsr getFAC - //SEG258 [119] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) + //SEG256 [117] (word) getFAC::return#2 ← (word) getFAC::return#0 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#2 ] ) // (word) getFAC::return#2 = (word) getFAC::return#0 // register copy zp ZP_WORD:12 - //SEG259 gen_sintab::@22 - //SEG260 [120] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) + //SEG257 gen_sintab::@22 + //SEG258 [118] (word~) gen_sintab::$23 ← (word) getFAC::return#2 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$23 ] ) // (word~) gen_sintab::$23 = (word) getFAC::return#2 // register copy zp ZP_WORD:12 - //SEG261 [121] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuaa=_byte_vwuz1 + //SEG259 [119] (byte~) gen_sintab::$24 ← ((byte)) (word~) gen_sintab::$23 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 gen_sintab::$24 ] ) -- vbuaa=_byte_vwuz1 lda _23 - //SEG262 [122] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuaa + //SEG260 [120] *((byte*) gen_sintab::sintab#12 + (byte) gen_sintab::i#10) ← (byte~) gen_sintab::$24 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- pbuz1_derefidx_vbuz2=vbuaa ldy i sta (sintab),y - //SEG263 [123] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + //SEG261 [121] call progress_inc param-assignment [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) jsr progress_inc - //SEG264 gen_sintab::@23 - //SEG265 [124] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1=_inc_vbuz1 + //SEG262 gen_sintab::@23 + //SEG263 [122] (byte) gen_sintab::i#1 ← ++ (byte) gen_sintab::i#10 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG266 [125] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1_lt_vbuz2_then_la1 + //SEG264 [123] if((byte) gen_sintab::i#1<(byte) gen_sintab::length#10) goto gen_sintab::@1 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#1 progress_idx#12 progress_cursor#11 ] ) -- vbuz1_lt_vbuz2_then_la1 lda i cmp length bcc b1 - //SEG267 gen_sintab::@return - //SEG268 [126] return [ ] ( main:2::init:5::gen_sintab:62 [ ] main:2::init:5::gen_sintab:66 [ ] ) + //SEG265 gen_sintab::@return + //SEG266 [124] return [ ] ( main:2::init:5::gen_sintab:60 [ ] main:2::init:5::gen_sintab:64 [ ] ) rts f_i: .byte 0, 0, 0, 0, 0 f_min: .byte 0, 0, 0, 0, 0 f_amp: .byte 0, 0, 0, 0, 0 } -//SEG269 progress_inc +//SEG267 progress_inc progress_inc: { - //SEG270 [127] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1=_inc_vbuz1 + //SEG268 [125] (byte) progress_idx#10 ← ++ (byte) progress_idx#34 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1=_inc_vbuz1 inc progress_idx - //SEG271 [128] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG269 [126] if((byte) progress_idx#10!=(byte/signed byte/word/signed word) 8) goto progress_inc::@1 [ progress_cursor#34 progress_idx#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_idx#10 ] ) -- vbuz1_neq_vbuc1_then_la1 lda progress_idx cmp #8 bne b1 - //SEG272 progress_inc::@2 - //SEG273 [129] (byte~) progress_inc::$2 ← * (const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8 [ progress_cursor#34 progress_inc::$2 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 progress_inc::$2 ] ) -- vbuaa=_deref_pbuc1 + //SEG270 progress_inc::@2 + //SEG271 [127] *((byte*) progress_cursor#34) ← *((const byte[]) progress_inc::progress_chars#0+(byte/signed byte/word/signed word) 8) [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) -- _deref_pbuz1=_deref_pbuc1 lda progress_chars+8 - //SEG274 [130] *((byte*) progress_cursor#34) ← (byte~) progress_inc::$2 [ progress_cursor#34 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#34 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (progress_cursor),y - //SEG275 [131] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) -- pbuz1=_inc_pbuz1 + //SEG272 [128] (byte*) progress_cursor#10 ← ++ (byte*) progress_cursor#34 [ progress_cursor#10 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_cursor#10 ] ) -- pbuz1=_inc_pbuz1 inc progress_cursor bne !+ inc progress_cursor+1 !: - //SEG276 [132] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] - //SEG277 [132] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy - //SEG278 [132] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 + //SEG273 [129] phi from progress_inc::@2 to progress_inc::@1 [phi:progress_inc::@2->progress_inc::@1] + //SEG274 [129] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#10 [phi:progress_inc::@2->progress_inc::@1#0] -- register_copy + //SEG275 [129] phi (byte) progress_idx#12 = (byte/signed byte/word/signed word) 0 [phi:progress_inc::@2->progress_inc::@1#1] -- vbuz1=vbuc1 lda #0 sta progress_idx - //SEG279 [132] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] - //SEG280 [132] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy - //SEG281 [132] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy - //SEG282 progress_inc::@1 + //SEG276 [129] phi from progress_inc to progress_inc::@1 [phi:progress_inc->progress_inc::@1] + //SEG277 [129] phi (byte*) progress_cursor#11 = (byte*) progress_cursor#34 [phi:progress_inc->progress_inc::@1#0] -- register_copy + //SEG278 [129] phi (byte) progress_idx#12 = (byte) progress_idx#10 [phi:progress_inc->progress_inc::@1#1] -- register_copy + //SEG279 progress_inc::@1 b1: - //SEG283 [133] (byte~) progress_inc::$3 ← (const byte[]) progress_inc::progress_chars#0 *idx (byte) progress_idx#12 [ progress_idx#12 progress_cursor#11 progress_inc::$3 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 progress_inc::$3 ] ) -- vbuaa=pbuc1_derefidx_vbuz1 + //SEG280 [130] *((byte*) progress_cursor#11) ← *((const byte[]) progress_inc::progress_chars#0 + (byte) progress_idx#12) [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldx progress_idx lda progress_chars,x - //SEG284 [134] *((byte*) progress_cursor#11) ← (byte~) progress_inc::$3 [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) -- _deref_pbuz1=vbuaa ldy #0 sta (progress_cursor),y - //SEG285 progress_inc::@return - //SEG286 [135] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:62::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:66::progress_inc:123 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) + //SEG281 progress_inc::@return + //SEG282 [131] return [ progress_idx#12 progress_cursor#11 ] ( main:2::init:5::gen_sintab:60::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] main:2::init:5::gen_sintab:64::progress_inc:121 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#12 progress_cursor#11 ] ) rts progress_chars: .byte $20, $65, $74, $75, $61, $f6, $e7, $ea, $e0 } -//SEG287 getFAC +//SEG283 getFAC getFAC: { .label return = $c - //SEG288 asm { jsr$b1aasty$festa$ff } + //SEG284 asm { jsr$b1aasty$festa$ff } jsr $b1aa sty $fe sta $ff - //SEG289 [137] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 + //SEG285 [133] (word) getFAC::return#0 ← *((const byte*) memHi#0) w= *((const byte*) memLo#0) [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda memLo sta return lda memHi sta return+1 - //SEG290 getFAC::@return - //SEG291 [138] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:62::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:66::getFAC:118 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) + //SEG286 getFAC::@return + //SEG287 [134] return [ getFAC::return#0 ] ( main:2::init:5::gen_sintab:60::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] main:2::init:5::gen_sintab:64::getFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 getFAC::return#0 ] ) rts } -//SEG292 addMEMtoFAC +//SEG288 addMEMtoFAC addMEMtoFAC: { .label mem = $c - //SEG293 [140] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) + //SEG289 [136] (byte*) prepareMEM::mem#2 ← (byte*) addMEMtoFAC::mem#2 [ prepareMEM::mem#2 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#2 ] ) // (byte*) prepareMEM::mem#2 = (byte*) addMEMtoFAC::mem#2 // register copy zp ZP_WORD:12 - //SEG294 [141] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG295 [144] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] - //SEG296 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy + //SEG290 [137] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG291 [140] phi from addMEMtoFAC to prepareMEM [phi:addMEMtoFAC->prepareMEM] + //SEG292 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#2 [phi:addMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG297 addMEMtoFAC::@1 - //SEG298 asm { lda$feldy$ffjsr$b867 } + //SEG293 addMEMtoFAC::@1 + //SEG294 asm { lda$feldy$ffjsr$b867 } lda $fe ldy $ff jsr $b867 - //SEG299 addMEMtoFAC::@return - //SEG300 [143] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG295 addMEMtoFAC::@return + //SEG296 [139] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG301 prepareMEM +//SEG297 prepareMEM prepareMEM: { .label mem = $c - //SEG302 [145] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuaa=_lo_pbuz1 + //SEG298 [141] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 prepareMEM::$0 ] ) -- vbuaa=_lo_pbuz1 lda mem - //SEG303 [146] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuaa + //SEG299 [142] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#5 ] ) -- _deref_pbuc1=vbuaa sta memLo - //SEG304 [147] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) -- vbuaa=_hi_pbuz1 + //SEG300 [143] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::$1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::$1 ] ) -- vbuaa=_hi_pbuz1 lda mem+1 - //SEG305 [148] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- _deref_pbuc1=vbuaa + //SEG301 [144] *((const byte*) memHi#0) ← (byte~) prepareMEM::$1 [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) -- _deref_pbuc1=vbuaa sta memHi - //SEG306 prepareMEM::@return - //SEG307 [149] return [ ] ( main:2::init:5::gen_sintab:62::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:97::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::addMEMtoFAC:116::prepareMEM:141 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114::prepareMEM:152 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110::prepareMEM:159 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78::prepareMEM:164 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108::prepareMEM:164 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106::prepareMEM:169 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG302 prepareMEM::@return + //SEG303 [145] return [ ] ( main:2::init:5::gen_sintab:60::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:95::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::addMEMtoFAC:114::prepareMEM:137 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112::prepareMEM:148 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108::prepareMEM:155 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76::prepareMEM:160 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106::prepareMEM:160 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104::prepareMEM:165 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG308 mulFACbyMEM +//SEG304 mulFACbyMEM mulFACbyMEM: { .label mem = $c - //SEG309 [151] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) + //SEG305 [147] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#4 ] ) // (byte*) prepareMEM::mem#4 = (byte*) mulFACbyMEM::mem#2 // register copy zp ZP_WORD:12 - //SEG310 [152] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG311 [144] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] - //SEG312 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy + //SEG306 [148] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG307 [140] phi from mulFACbyMEM to prepareMEM [phi:mulFACbyMEM->prepareMEM] + //SEG308 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#4 [phi:mulFACbyMEM->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG313 mulFACbyMEM::@1 - //SEG314 asm { lda$feldy$ffjsr$ba28 } + //SEG309 mulFACbyMEM::@1 + //SEG310 asm { lda$feldy$ffjsr$ba28 } lda $fe ldy $ff jsr $ba28 - //SEG315 mulFACbyMEM::@return - //SEG316 [154] return [ ] ( main:2::init:5::gen_sintab:62::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::mulFACbyMEM:114 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG311 mulFACbyMEM::@return + //SEG312 [150] return [ ] ( main:2::init:5::gen_sintab:60::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::mulFACbyMEM:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG317 sinFAC +//SEG313 sinFAC sinFAC: { - //SEG318 asm { jsr$e26b } + //SEG314 asm { jsr$e26b } jsr $e26b - //SEG319 sinFAC::@return - //SEG320 [156] return [ ] ( main:2::init:5::gen_sintab:62::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::sinFAC:112 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG315 sinFAC::@return + //SEG316 [152] return [ ] ( main:2::init:5::gen_sintab:60::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::sinFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG321 divMEMbyFAC +//SEG317 divMEMbyFAC divMEMbyFAC: { .label mem = $c - //SEG322 [158] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) + //SEG318 [154] (byte*) prepareMEM::mem#3 ← (byte*) divMEMbyFAC::mem#2 [ prepareMEM::mem#3 ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#3 ] ) // (byte*) prepareMEM::mem#3 = (byte*) divMEMbyFAC::mem#2 // register copy zp ZP_WORD:12 - //SEG323 [159] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG324 [144] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] - //SEG325 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy + //SEG319 [155] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG320 [140] phi from divMEMbyFAC to prepareMEM [phi:divMEMbyFAC->prepareMEM] + //SEG321 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#3 [phi:divMEMbyFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG326 divMEMbyFAC::@1 - //SEG327 asm { lda$feldy$ffjsr$bb0f } + //SEG322 divMEMbyFAC::@1 + //SEG323 asm { lda$feldy$ffjsr$bb0f } lda $fe ldy $ff jsr $bb0f - //SEG328 divMEMbyFAC::@return - //SEG329 [161] return [ ] ( main:2::init:5::gen_sintab:62::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::divMEMbyFAC:110 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG324 divMEMbyFAC::@return + //SEG325 [157] return [ ] ( main:2::init:5::gen_sintab:60::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::divMEMbyFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG330 setFAC +//SEG326 setFAC setFAC: { .label w = $c - //SEG331 [163] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz1 - //SEG332 [164] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG333 [144] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] - //SEG334 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy + //SEG327 [159] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#5 [ prepareMEM::mem#0 ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz1 + //SEG328 [160] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG329 [140] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM] + //SEG330 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG335 setFAC::@1 - //SEG336 asm { ldy$felda$ffjsr$b391 } + //SEG331 setFAC::@1 + //SEG332 asm { ldy$felda$ffjsr$b391 } ldy $fe lda $ff jsr $b391 - //SEG337 setFAC::@return - //SEG338 [166] return [ ] ( main:2::init:5::gen_sintab:62::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setFAC:91 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:102 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:62::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setFAC:108 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG333 setFAC::@return + //SEG334 [162] return [ ] ( main:2::init:5::gen_sintab:60::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:76 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:81 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:100 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:60::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG339 setMEMtoFAC +//SEG335 setMEMtoFAC setMEMtoFAC: { .label mem = $c - //SEG340 [168] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) + //SEG336 [164] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#5 [ prepareMEM::mem#1 ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 prepareMEM::mem#1 ] ) // (byte*) prepareMEM::mem#1 = (byte*) setMEMtoFAC::mem#5 // register copy zp ZP_WORD:12 - //SEG341 [169] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) - //SEG342 [144] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] - //SEG343 [144] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy + //SEG337 [165] call prepareMEM param-assignment [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG338 [140] phi from setMEMtoFAC to prepareMEM [phi:setMEMtoFAC->prepareMEM] + //SEG339 [140] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#1 [phi:setMEMtoFAC->prepareMEM#0] -- register_copy jsr prepareMEM - //SEG344 setMEMtoFAC::@1 - //SEG345 asm { ldx$feldy$ffjsr$bbd4 } + //SEG340 setMEMtoFAC::@1 + //SEG341 asm { ldx$feldy$ffjsr$bbd4 } ldx $fe ldy $ff jsr $bbd4 - //SEG346 setMEMtoFAC::@return - //SEG347 [171] return [ ] ( main:2::init:5::gen_sintab:62::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:89 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:95 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:99 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:62::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:66::setMEMtoFAC:106 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) + //SEG342 setMEMtoFAC::@return + //SEG343 [167] return [ ] ( main:2::init:5::gen_sintab:60::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:83 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:93 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:97 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:60::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] main:2::init:5::gen_sintab:64::setMEMtoFAC:104 [ gen_sintab::length#10 gen_sintab::sintab#12 gen_sintab::i#10 progress_idx#34 progress_cursor#34 ] ) rts } -//SEG348 subFACfromARG +//SEG344 subFACfromARG subFACfromARG: { - //SEG349 asm { jsr$b853 } + //SEG345 asm { jsr$b853 } jsr $b853 - //SEG350 subFACfromARG::@return - //SEG351 [173] return [ ] ( main:2::init:5::gen_sintab:62::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::subFACfromARG:87 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG346 subFACfromARG::@return + //SEG347 [169] return [ ] ( main:2::init:5::gen_sintab:60::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::subFACfromARG:85 [ gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) rts } -//SEG352 setARGtoFAC +//SEG348 setARGtoFAC setARGtoFAC: { - //SEG353 asm { jsr$bc0f } + //SEG349 asm { jsr$bc0f } jsr $bc0f - //SEG354 setARGtoFAC::@return - //SEG355 [175] return [ ] ( main:2::init:5::gen_sintab:62::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:66::setARGtoFAC:80 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) + //SEG350 setARGtoFAC::@return + //SEG351 [171] return [ ] ( main:2::init:5::gen_sintab:60::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] main:2::init:5::gen_sintab:64::setARGtoFAC:78 [ gen_sintab::min#2 gen_sintab::length#10 gen_sintab::sintab#12 progress_init::line#2 ] ) rts } -//SEG356 progress_init +//SEG352 progress_init progress_init: { .label line = $a - //SEG357 progress_init::@return - //SEG358 [177] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:60 [ progress_init::line#2 ] main:2::init:5::progress_init:64 [ progress_init::line#2 ] ) + //SEG353 progress_init::@return + //SEG354 [173] return [ progress_init::line#2 ] ( main:2::init:5::progress_init:58 [ progress_init::line#2 ] main:2::init:5::progress_init:62 [ progress_init::line#2 ] ) rts } -//SEG359 gen_sprites +//SEG355 gen_sprites gen_sprites: { .label spr = 8 .label i = 2 - //SEG360 [179] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] - //SEG361 [179] phi (byte*) gen_sprites::spr#2 = (const byte[]) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 + //SEG356 [175] phi from gen_sprites to gen_sprites::@1 [phi:gen_sprites->gen_sprites::@1] + //SEG357 [175] phi (byte*) gen_sprites::spr#2 = (const byte[]) sprites#0 [phi:gen_sprites->gen_sprites::@1#0] -- pbuz1=pbuc1 lda #sprites sta spr+1 - //SEG362 [179] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 + //SEG358 [175] phi (byte) gen_sprites::i#2 = (byte/signed byte/word/signed word) 0 [phi:gen_sprites->gen_sprites::@1#1] -- vbuz1=vbuc1 lda #0 sta i - //SEG363 [179] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] - //SEG364 [179] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy - //SEG365 [179] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy - //SEG366 gen_sprites::@1 + //SEG359 [175] phi from gen_sprites::@3 to gen_sprites::@1 [phi:gen_sprites::@3->gen_sprites::@1] + //SEG360 [175] phi (byte*) gen_sprites::spr#2 = (byte*) gen_sprites::spr#1 [phi:gen_sprites::@3->gen_sprites::@1#0] -- register_copy + //SEG361 [175] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy + //SEG362 gen_sprites::@1 b1: - //SEG367 [180] (byte) gen_chargen_sprite::ch#0 ← (const byte[]) gen_sprites::cml#0 *idx (byte) gen_sprites::i#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 + //SEG363 [176] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuxx=pbuc1_derefidx_vbuz1 ldx i lda cml,x tax - //SEG368 [181] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 + //SEG364 [177] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 lda spr sta gen_chargen_sprite.sprite lda spr+1 sta gen_chargen_sprite.sprite+1 - //SEG369 [182] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + //SEG365 [178] call gen_chargen_sprite param-assignment [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) jsr gen_chargen_sprite - //SEG370 gen_sprites::@3 - //SEG371 [183] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG366 gen_sprites::@3 + //SEG367 [179] (byte*) gen_sprites::spr#1 ← (byte*) gen_sprites::spr#2 + (byte/signed byte/word/signed word) 64 [ gen_sprites::i#2 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#2 gen_sprites::spr#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda spr clc adc #$40 @@ -24262,18 +24031,18 @@ gen_sprites: { bcc !+ inc spr+1 !: - //SEG372 [184] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG368 [180] (byte) gen_sprites::i#1 ← ++ (byte) gen_sprites::i#2 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG373 [185] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:58 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG369 [181] if((byte) gen_sprites::i#1!=(byte/signed byte/word/signed word) 7) goto gen_sprites::@1 [ gen_sprites::i#1 gen_sprites::spr#1 ] ( main:2::init:5::gen_sprites:56 [ gen_sprites::i#1 gen_sprites::spr#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda i cmp #7 bne b1 - //SEG374 gen_sprites::@return - //SEG375 [186] return [ ] ( main:2::init:5::gen_sprites:58 [ ] ) + //SEG370 gen_sprites::@return + //SEG371 [182] return [ ] ( main:2::init:5::gen_sprites:56 [ ] ) rts cml: .text "camelot" } -//SEG376 gen_chargen_sprite +//SEG372 gen_chargen_sprite gen_chargen_sprite: { .label _0 = $c .label _1 = $c @@ -24284,19 +24053,19 @@ gen_chargen_sprite: { .label x = 5 .label y = 3 .label c = 6 - //SEG377 [187] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuxx + //SEG373 [183] (word~) gen_chargen_sprite::$0 ← ((word)) (byte) gen_chargen_sprite::ch#0 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$0 ] ) -- vwuz1=_word_vbuxx txa sta _0 lda #0 sta _0+1 - //SEG378 [188] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz1_rol_3 + //SEG374 [184] (word~) gen_chargen_sprite::$1 ← (word~) gen_chargen_sprite::$0 << (byte/signed byte/word/signed word) 3 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::$1 ] ) -- vwuz1=vwuz1_rol_3 asl _1 rol _1+1 asl _1 rol _1+1 asl _1 rol _1+1 - //SEG379 [189] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz1 + //SEG375 [185] (byte*) gen_chargen_sprite::chargen#0 ← (const byte*) CHARGEN#0 + (word~) gen_chargen_sprite::$1 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- pbuz1=pbuc1_plus_vwuz1 lda chargen clc adc #CHARGEN sta chargen+1 - //SEG380 asm { sei } + //SEG376 asm { sei } sei - //SEG381 [191] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- _deref_pbuc1=vbuc2 + //SEG377 [187] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 50 [ gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::sprite#0 gen_chargen_sprite::chargen#0 ] ) -- _deref_pbuc1=vbuc2 lda #$32 sta PROCPORT - //SEG382 [192] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] - //SEG383 [192] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy - //SEG384 [192] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 + //SEG378 [188] phi from gen_chargen_sprite to gen_chargen_sprite::@1 [phi:gen_chargen_sprite->gen_chargen_sprite::@1] + //SEG379 [188] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#0] -- register_copy + //SEG380 [188] phi (byte) gen_chargen_sprite::y#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite->gen_chargen_sprite::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG385 [192] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] - //SEG386 [192] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy - //SEG387 [192] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy - //SEG388 gen_chargen_sprite::@1 + //SEG381 [188] phi from gen_chargen_sprite::@9 to gen_chargen_sprite::@1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1] + //SEG382 [188] phi (byte*) gen_chargen_sprite::sprite#11 = (byte*) gen_chargen_sprite::sprite#2 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#0] -- register_copy + //SEG383 [188] phi (byte) gen_chargen_sprite::y#2 = (byte) gen_chargen_sprite::y#1 [phi:gen_chargen_sprite::@9->gen_chargen_sprite::@1#1] -- register_copy + //SEG384 gen_chargen_sprite::@1 b1: - //SEG389 [193] (byte) gen_chargen_sprite::bits#0 ← (byte*) gen_chargen_sprite::chargen#0 *idx (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 + //SEG385 [189] (byte) gen_chargen_sprite::bits#0 ← *((byte*) gen_chargen_sprite::chargen#0 + (byte) gen_chargen_sprite::y#2) [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#11 gen_chargen_sprite::bits#0 ] ) -- vbuz1=pbuz2_derefidx_vbuz3 ldy y lda (chargen),y sta bits - //SEG390 [194] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] - //SEG391 [194] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 + //SEG386 [190] phi from gen_chargen_sprite::@1 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2] + //SEG387 [190] phi (byte) gen_chargen_sprite::x#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG392 [194] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy - //SEG393 [194] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 + //SEG388 [190] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#11 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#1] -- register_copy + //SEG389 [190] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#2] -- vbuyy=vbuc1 tay - //SEG394 [194] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 + //SEG390 [190] phi (byte) gen_chargen_sprite::s_gen#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#3] -- vbuz1=vbuc1 sta s_gen - //SEG395 [194] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy - //SEG396 [194] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] - //SEG397 [194] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy - //SEG398 [194] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy - //SEG399 [194] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy - //SEG400 [194] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy - //SEG401 [194] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy - //SEG402 gen_chargen_sprite::@2 + //SEG391 [190] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#0 [phi:gen_chargen_sprite::@1->gen_chargen_sprite::@2#4] -- register_copy + //SEG392 [190] phi from gen_chargen_sprite::@8 to gen_chargen_sprite::@2 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2] + //SEG393 [190] phi (byte) gen_chargen_sprite::x#6 = (byte) gen_chargen_sprite::x#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#0] -- register_copy + //SEG394 [190] phi (byte*) gen_chargen_sprite::sprite#10 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#1] -- register_copy + //SEG395 [190] phi (byte) gen_chargen_sprite::s_gen_cnt#4 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#2] -- register_copy + //SEG396 [190] phi (byte) gen_chargen_sprite::s_gen#5 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#3] -- register_copy + //SEG397 [190] phi (byte) gen_chargen_sprite::bits#2 = (byte) gen_chargen_sprite::bits#1 [phi:gen_chargen_sprite::@8->gen_chargen_sprite::@2#4] -- register_copy + //SEG398 gen_chargen_sprite::@2 b2: - //SEG403 [195] (byte~) gen_chargen_sprite::$4 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$4 ] ) -- vbuaa=vbuz1_band_vbuc1 + //SEG399 [191] (byte~) gen_chargen_sprite::$3 ← (byte) gen_chargen_sprite::bits#2 & (byte/word/signed word) 128 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 gen_chargen_sprite::$3 ] ) -- vbuaa=vbuz1_band_vbuc1 lda bits and #$80 - //SEG404 [196] if((byte~) gen_chargen_sprite::$4==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuaa_eq_0_then_la1 + //SEG400 [192] if((byte~) gen_chargen_sprite::$3==(byte/signed byte/word/signed word) 0) goto gen_chargen_sprite::@3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::sprite#10 gen_chargen_sprite::x#6 ] ) -- vbuaa_eq_0_then_la1 cmp #0 beq b6 - //SEG405 [197] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] - //SEG406 gen_chargen_sprite::@6 - //SEG407 [198] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] - //SEG408 [198] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG401 [193] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@6 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@6] + //SEG402 gen_chargen_sprite::@6 + //SEG403 [194] phi from gen_chargen_sprite::@6 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3] + //SEG404 [194] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 1 [phi:gen_chargen_sprite::@6->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #1 sta c jmp b3 - //SEG409 [198] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] + //SEG405 [194] phi from gen_chargen_sprite::@2 to gen_chargen_sprite::@3 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3] b6: - //SEG410 [198] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 + //SEG406 [194] phi (byte) gen_chargen_sprite::c#3 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@2->gen_chargen_sprite::@3#0] -- vbuz1=vbuc1 lda #0 sta c - //SEG411 gen_chargen_sprite::@3 + //SEG407 gen_chargen_sprite::@3 b3: - //SEG412 [199] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] - //SEG413 [199] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy - //SEG414 [199] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 + //SEG408 [195] phi from gen_chargen_sprite::@3 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4] + //SEG409 [195] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#10 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#0] -- register_copy + //SEG410 [195] phi (byte) gen_chargen_sprite::b#2 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#1] -- vbuxx=vbuc1 ldx #0 - //SEG415 [199] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy - //SEG416 [199] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy - //SEG417 [199] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] - //SEG418 [199] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy - //SEG419 [199] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy - //SEG420 [199] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy - //SEG421 [199] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy - //SEG422 gen_chargen_sprite::@4 + //SEG411 [195] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#4 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#2] -- register_copy + //SEG412 [195] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#5 [phi:gen_chargen_sprite::@3->gen_chargen_sprite::@4#3] -- register_copy + //SEG413 [195] phi from gen_chargen_sprite::@5 to gen_chargen_sprite::@4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4] + //SEG414 [195] phi (byte*) gen_chargen_sprite::sprite#3 = (byte*) gen_chargen_sprite::sprite#4 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#0] -- register_copy + //SEG415 [195] phi (byte) gen_chargen_sprite::b#2 = (byte) gen_chargen_sprite::b#1 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#1] -- register_copy + //SEG416 [195] phi (byte) gen_chargen_sprite::s_gen_cnt#3 = (byte) gen_chargen_sprite::s_gen_cnt#5 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#2] -- register_copy + //SEG417 [195] phi (byte) gen_chargen_sprite::s_gen#3 = (byte) gen_chargen_sprite::s_gen#6 [phi:gen_chargen_sprite::@5->gen_chargen_sprite::@4#3] -- register_copy + //SEG418 gen_chargen_sprite::@4 b4: - //SEG423 [200] (byte~) gen_chargen_sprite::$7 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$7 ] ) -- vbuaa=vbuz1_rol_1 + //SEG419 [196] (byte~) gen_chargen_sprite::$6 ← (byte) gen_chargen_sprite::s_gen#3 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::$6 ] ) -- vbuaa=vbuz1_rol_1 lda s_gen asl - //SEG424 [201] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$7 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- vbuz1=vbuaa_bor_vbuz2 + //SEG420 [197] (byte) gen_chargen_sprite::s_gen#1 ← (byte~) gen_chargen_sprite::$6 | (byte) gen_chargen_sprite::c#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- vbuz1=vbuaa_bor_vbuz2 ora c sta s_gen - //SEG425 [202] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy=_inc_vbuyy + //SEG421 [198] (byte) gen_chargen_sprite::s_gen_cnt#1 ← ++ (byte) gen_chargen_sprite::s_gen_cnt#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG426 [203] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG422 [199] if((byte) gen_chargen_sprite::s_gen_cnt#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@5 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 gen_chargen_sprite::s_gen_cnt#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #8 bne b5 - //SEG427 gen_chargen_sprite::@7 - //SEG428 [204] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG423 gen_chargen_sprite::@7 + //SEG424 [200] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 0) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 ldy #0 sta (sprite),y - //SEG429 [205] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG425 [201] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 3) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 gen_chargen_sprite::s_gen#1 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 ldy #3 sta (sprite),y - //SEG430 [206] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 + //SEG426 [202] *((byte*) gen_chargen_sprite::sprite#3 + (byte/signed byte/word/signed word) 6) ← (byte) gen_chargen_sprite::s_gen#1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#3 ] ) -- pbuz1_derefidx_vbuc1=vbuz2 ldy #6 sta (sprite),y - //SEG431 [207] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG427 [203] (byte*) gen_chargen_sprite::sprite#1 ← ++ (byte*) gen_chargen_sprite::sprite#3 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::c#3 gen_chargen_sprite::b#2 gen_chargen_sprite::sprite#1 ] ) -- pbuz1=_inc_pbuz1 inc sprite bne !+ inc sprite+1 !: - //SEG432 [208] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] - //SEG433 [208] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy - //SEG434 [208] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 + //SEG428 [204] phi from gen_chargen_sprite::@7 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5] + //SEG429 [204] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#1 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#0] -- register_copy + //SEG430 [204] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#1] -- vbuyy=vbuc1 ldy #0 - //SEG435 [208] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 + //SEG431 [204] phi (byte) gen_chargen_sprite::s_gen#6 = (byte/signed byte/word/signed word) 0 [phi:gen_chargen_sprite::@7->gen_chargen_sprite::@5#2] -- vbuz1=vbuc1 tya sta s_gen - //SEG436 [208] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] - //SEG437 [208] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy - //SEG438 [208] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy - //SEG439 [208] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy - //SEG440 gen_chargen_sprite::@5 + //SEG432 [204] phi from gen_chargen_sprite::@4 to gen_chargen_sprite::@5 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5] + //SEG433 [204] phi (byte*) gen_chargen_sprite::sprite#4 = (byte*) gen_chargen_sprite::sprite#3 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#0] -- register_copy + //SEG434 [204] phi (byte) gen_chargen_sprite::s_gen_cnt#5 = (byte) gen_chargen_sprite::s_gen_cnt#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#1] -- register_copy + //SEG435 [204] phi (byte) gen_chargen_sprite::s_gen#6 = (byte) gen_chargen_sprite::s_gen#1 [phi:gen_chargen_sprite::@4->gen_chargen_sprite::@5#2] -- register_copy + //SEG436 gen_chargen_sprite::@5 b5: - //SEG441 [209] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx=_inc_vbuxx + //SEG437 [205] (byte) gen_chargen_sprite::b#1 ← ++ (byte) gen_chargen_sprite::b#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG442 [210] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + //SEG438 [206] if((byte) gen_chargen_sprite::b#1!=(byte/signed byte/word/signed word) 3) goto gen_chargen_sprite::@4 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#2 gen_chargen_sprite::x#6 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::c#3 gen_chargen_sprite::b#1 ] ) -- vbuxx_neq_vbuc1_then_la1 cpx #3 bne b4 - //SEG443 gen_chargen_sprite::@8 - //SEG444 [211] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) -- vbuz1=vbuz1_rol_1 + //SEG439 gen_chargen_sprite::@8 + //SEG440 [207] (byte) gen_chargen_sprite::bits#1 ← (byte) gen_chargen_sprite::bits#2 << (byte/signed byte/word/signed word) 1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::x#6 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 ] ) -- vbuz1=vbuz1_rol_1 asl bits - //SEG445 [212] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG441 [208] (byte) gen_chargen_sprite::x#1 ← ++ (byte) gen_chargen_sprite::x#6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG446 [213] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG442 [209] if((byte) gen_chargen_sprite::x#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::bits#1 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::sprite#4 gen_chargen_sprite::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda x cmp #8 bne b2 - //SEG447 gen_chargen_sprite::@9 - //SEG448 [214] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG443 gen_chargen_sprite::@9 + //SEG444 [210] (byte*) gen_chargen_sprite::sprite#2 ← (byte*) gen_chargen_sprite::sprite#4 + (byte/signed byte/word/signed word) 6 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#2 gen_chargen_sprite::sprite#2 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda sprite clc adc #6 @@ -24436,91 +24205,91 @@ gen_chargen_sprite: { bcc !+ inc sprite+1 !: - //SEG449 [215] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1=_inc_vbuz1 + //SEG445 [211] (byte) gen_chargen_sprite::y#1 ← ++ (byte) gen_chargen_sprite::y#2 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG450 [216] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG446 [212] if((byte) gen_chargen_sprite::y#1!=(byte/signed byte/word/signed word) 8) goto gen_chargen_sprite::@1 [ gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::chargen#0 gen_chargen_sprite::y#1 gen_chargen_sprite::sprite#2 ] ) -- vbuz1_neq_vbuc1_then_la1 lda y cmp #8 bne b1 - //SEG451 gen_chargen_sprite::@10 - //SEG452 [217] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) -- _deref_pbuc1=vbuc2 + //SEG447 gen_chargen_sprite::@10 + //SEG448 [213] *((const byte*) PROCPORT#0) ← (byte/signed byte/word/signed word) 55 [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) -- _deref_pbuc1=vbuc2 lda #$37 sta PROCPORT - //SEG453 asm { cli } + //SEG449 asm { cli } cli - //SEG454 gen_chargen_sprite::@return - //SEG455 [219] return [ ] ( main:2::init:5::gen_sprites:58::gen_chargen_sprite:182 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) + //SEG450 gen_chargen_sprite::@return + //SEG451 [215] return [ ] ( main:2::init:5::gen_sprites:56::gen_chargen_sprite:178 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) rts } -//SEG456 place_sprites +//SEG452 place_sprites place_sprites: { .const sprites_ptr = SCREEN+$3f8 .label spr_id = 2 .label spr_x = 3 .label col = 4 - //SEG457 [220] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG453 [216] *((const byte*) SPRITES_ENABLE#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 lda #$7f sta SPRITES_ENABLE - //SEG458 [221] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG454 [217] *((const byte*) SPRITES_EXPAND_X#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_X - //SEG459 [222] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:56 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG455 [218] *((const byte*) SPRITES_EXPAND_Y#0) ← (byte/signed byte/word/signed word) 127 [ ] ( main:2::init:5::place_sprites:54 [ ] ) -- _deref_pbuc1=vbuc2 sta SPRITES_EXPAND_Y - //SEG460 [223] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] - //SEG461 [223] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 + //SEG456 [219] phi from place_sprites to place_sprites::@1 [phi:place_sprites->place_sprites::@1] + //SEG457 [219] phi (byte) place_sprites::col#2 = (byte/signed byte/word/signed word) 5 [phi:place_sprites->place_sprites::@1#0] -- vbuz1=vbuc1 lda #5 sta col - //SEG462 [223] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 + //SEG458 [219] phi (byte) place_sprites::j2#3 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#1] -- vbuxx=vbuc1 ldx #0 - //SEG463 [223] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 + //SEG459 [219] phi (byte) place_sprites::spr_x#2 = (byte/signed byte/word/signed word) 60 [phi:place_sprites->place_sprites::@1#2] -- vbuz1=vbuc1 lda #$3c sta spr_x - //SEG464 [223] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 + //SEG460 [219] phi (byte) place_sprites::j#2 = (byte/signed byte/word/signed word) 0 [phi:place_sprites->place_sprites::@1#3] -- vbuyy=vbuc1 ldy #0 - //SEG465 [223] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 + //SEG461 [219] phi (byte) place_sprites::spr_id#2 = ((byte))(const byte[]) sprites#0/(byte/signed byte/word/signed word) 64 [phi:place_sprites->place_sprites::@1#4] -- vbuz1=vbuc1 lda #$ff & sprites/$40 sta spr_id - //SEG466 [223] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] - //SEG467 [223] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy - //SEG468 [223] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy - //SEG469 [223] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy - //SEG470 [223] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy - //SEG471 [223] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy - //SEG472 place_sprites::@1 + //SEG462 [219] phi from place_sprites::@1 to place_sprites::@1 [phi:place_sprites::@1->place_sprites::@1] + //SEG463 [219] phi (byte) place_sprites::col#2 = (byte) place_sprites::col#1 [phi:place_sprites::@1->place_sprites::@1#0] -- register_copy + //SEG464 [219] phi (byte) place_sprites::j2#3 = (byte) place_sprites::j2#2 [phi:place_sprites::@1->place_sprites::@1#1] -- register_copy + //SEG465 [219] phi (byte) place_sprites::spr_x#2 = (byte) place_sprites::spr_x#1 [phi:place_sprites::@1->place_sprites::@1#2] -- register_copy + //SEG466 [219] phi (byte) place_sprites::j#2 = (byte) place_sprites::j#1 [phi:place_sprites::@1->place_sprites::@1#3] -- register_copy + //SEG467 [219] phi (byte) place_sprites::spr_id#2 = (byte) place_sprites::spr_id#1 [phi:place_sprites::@1->place_sprites::@1#4] -- register_copy + //SEG468 place_sprites::@1 b1: - //SEG473 [224] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG469 [220] *((const byte*) place_sprites::sprites_ptr#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::spr_id#2 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#2 place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 lda spr_id sta sprites_ptr,y - //SEG474 [225] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG470 [221] (byte) place_sprites::spr_id#1 ← ++ (byte) place_sprites::spr_id#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- vbuz1=_inc_vbuz1 inc spr_id - //SEG475 [226] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 + //SEG471 [222] *((const byte*) SPRITES_XPOS#0 + (byte) place_sprites::j2#3) ← (byte) place_sprites::spr_x#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuz1 lda spr_x sta SPRITES_XPOS,x - //SEG476 [227] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG472 [223] *((const byte*) SPRITES_YPOS#0 + (byte) place_sprites::j2#3) ← (byte/signed byte/word/signed word) 80 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #$50 sta SPRITES_YPOS,x - //SEG477 [228] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 + //SEG473 [224] *((const byte*) SPRITES_COLS#0 + (byte) place_sprites::j#2) ← (byte) place_sprites::col#2 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_x#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 ] ) -- pbuc1_derefidx_vbuyy=vbuz1 lda col sta SPRITES_COLS,y - //SEG478 [229] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 + //SEG474 [225] (byte) place_sprites::spr_x#1 ← (byte) place_sprites::spr_x#2 + (byte/signed byte/word/signed word) 32 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::col#2 place_sprites::spr_id#1 place_sprites::spr_x#1 ] ) -- vbuz1=vbuz1_plus_vbuc1 lda spr_x clc adc #$20 sta spr_x - //SEG479 [230] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) -- vbuz1=vbuz1_bxor_vbuc1 + //SEG475 [226] (byte) place_sprites::col#1 ← (byte) place_sprites::col#2 ^ (byte/signed byte/word/signed word) 7^(byte/signed byte/word/signed word) 5 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::j2#3 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 ] ) -- vbuz1=vbuz1_bxor_vbuc1 lda col eor #7^5 sta col - //SEG480 [231] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) -- vbuxx=_inc_vbuxx + //SEG476 [227] (byte) place_sprites::j2#1 ← ++ (byte) place_sprites::j2#3 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::col#1 place_sprites::j2#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG481 [232] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuxx=_inc_vbuxx + //SEG477 [228] (byte) place_sprites::j2#2 ← ++ (byte) place_sprites::j2#1 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::j#2 place_sprites::spr_id#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG482 [233] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy=_inc_vbuyy + //SEG478 [229] (byte) place_sprites::j#1 ← ++ (byte) place_sprites::j#2 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG483 [234] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:56 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + //SEG479 [230] if((byte) place_sprites::j#1!=(byte/signed byte/word/signed word) 7) goto place_sprites::@1 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ( main:2::init:5::place_sprites:54 [ place_sprites::spr_id#1 place_sprites::j#1 place_sprites::spr_x#1 place_sprites::j2#2 place_sprites::col#1 ] ) -- vbuyy_neq_vbuc1_then_la1 cpy #7 bne b1 - //SEG484 place_sprites::@return - //SEG485 [235] return [ ] ( main:2::init:5::place_sprites:56 [ ] ) + //SEG480 place_sprites::@return + //SEG481 [231] return [ ] ( main:2::init:5::place_sprites:54 [ ] ) rts } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym index bc478b674..c0e287536 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym @@ -33,11 +33,9 @@ (byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0 (void()) anim() -(byte~) anim::$1 reg byte a 202.0 -(byte~) anim::$3 $3 zp ZP_BYTE:5 101.0 -(byte~) anim::$4 reg byte a 202.0 -(byte~) anim::$6 reg byte a 202.0 -(byte~) anim::$7 reg byte a 202.0 +(byte~) anim::$2 $2 zp ZP_BYTE:5 101.0 +(byte~) anim::$3 reg byte a 202.0 +(byte~) anim::$5 reg byte a 202.0 (label) anim::@1 (label) anim::@14 (label) anim::@15 @@ -51,27 +49,27 @@ (label) anim::@return (byte) anim::j (byte) anim::j#1 j zp ZP_BYTE:7 151.5 -(byte) anim::j#2 j zp ZP_BYTE:7 10.1 +(byte) anim::j#2 j zp ZP_BYTE:7 11.222222222222221 (byte) anim::j2 (byte) anim::j2#1 reg byte a 202.0 (byte) anim::j2#2 j2 zp ZP_BYTE:6 67.33333333333333 -(byte) anim::j2#3 j2 zp ZP_BYTE:6 22.444444444444443 +(byte) anim::j2#3 j2 zp ZP_BYTE:6 25.25 (word) anim::x (word) anim::x#0 x zp ZP_WORD:8 75.75 (byte) anim::x_msb -(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.0 -(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 67.33333333333333 +(byte) anim::x_msb#1 x_msb zp ZP_BYTE:5 12.75 +(byte) anim::x_msb#2 x_msb zp ZP_BYTE:5 101.0 (byte) anim::xidx (byte) anim::xidx#0 xidx zp ZP_BYTE:4 2.0 (byte) anim::xidx#1 xidx zp ZP_BYTE:4 202.0 (byte) anim::xidx#2 xidx zp ZP_BYTE:4 202.0 -(byte) anim::xidx#3 xidx zp ZP_BYTE:4 30.5 +(byte) anim::xidx#3 xidx zp ZP_BYTE:4 38.125 (byte) anim::xidx#5 xidx zp ZP_BYTE:4 33.666666666666664 (byte) anim::yidx (byte) anim::yidx#0 reg byte y 4.0 (byte) anim::yidx#1 reg byte y 202.0 (byte) anim::yidx#2 reg byte y 202.0 -(byte) anim::yidx#3 reg byte y 21.78571428571429 +(byte) anim::yidx#3 reg byte y 25.416666666666664 (byte) anim::yidx#6 reg byte y 60.599999999999994 (void()) clear_screen() (label) clear_screen::@1 @@ -87,8 +85,8 @@ (void()) gen_chargen_sprite((byte) gen_chargen_sprite::ch , (byte*) gen_chargen_sprite::sprite) (word~) gen_chargen_sprite::$0 $0 zp ZP_WORD:12 4.0 (word~) gen_chargen_sprite::$1 $1 zp ZP_WORD:12 4.0 -(byte~) gen_chargen_sprite::$4 reg byte a 2002.0 -(byte~) gen_chargen_sprite::$7 reg byte a 20002.0 +(byte~) gen_chargen_sprite::$3 reg byte a 2002.0 +(byte~) gen_chargen_sprite::$6 reg byte a 20002.0 (label) gen_chargen_sprite::@1 (label) gen_chargen_sprite::@10 (label) gen_chargen_sprite::@2 @@ -260,15 +258,13 @@ (byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 4.666666666666666 (byte*) progress_cursor (byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0 -(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.4285714285714284 -(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7037037037037037 +(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 +(byte*) progress_cursor#34 progress_cursor zp ZP_WORD:10 0.7307692307692306 (byte) progress_idx (byte) progress_idx#10 progress_idx zp ZP_BYTE:4 3.0 -(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.142857142857143 +(byte) progress_idx#12 progress_idx zp ZP_BYTE:4 2.5 (byte) progress_idx#34 progress_idx zp ZP_BYTE:4 0.5652173913043479 (void()) progress_inc() -(byte~) progress_inc::$2 reg byte a 4.0 -(byte~) progress_inc::$3 reg byte a 4.0 (label) progress_inc::@1 (label) progress_inc::@2 (label) progress_inc::@return @@ -298,11 +294,11 @@ (label) sinFAC::@return (byte) sin_idx_x (byte) sin_idx_x#11 sin_idx_x zp ZP_BYTE:2 1.4444444444444446 -(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5172413793103449 +(byte) sin_idx_x#13 sin_idx_x zp ZP_BYTE:2 0.5555555555555556 (byte) sin_idx_x#3 sin_idx_x zp ZP_BYTE:2 2.0 (byte) sin_idx_y (byte) sin_idx_y#11 sin_idx_y zp ZP_BYTE:3 2.6 -(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.45454545454545453 +(byte) sin_idx_y#13 sin_idx_y zp ZP_BYTE:3 0.4838709677419355 (byte) sin_idx_y#3 sin_idx_y zp ZP_BYTE:3 2.0 (byte) sinlen_x (const byte) sinlen_x#0 sinlen_x = (byte/word/signed word) 221 @@ -320,7 +316,7 @@ zp ZP_BYTE:2 [ sin_idx_x#13 sin_idx_x#11 sin_idx_x#3 gen_sintab::min#2 gen_sintab::i#10 gen_sintab::i#1 gen_sprites::i#2 gen_sprites::i#1 place_sprites::spr_id#2 place_sprites::spr_id#1 ] zp ZP_BYTE:3 [ sin_idx_y#13 sin_idx_y#11 sin_idx_y#3 gen_sintab::length#10 gen_chargen_sprite::y#2 gen_chargen_sprite::y#1 place_sprites::spr_x#2 place_sprites::spr_x#1 ] zp ZP_BYTE:4 [ anim::xidx#3 anim::xidx#0 anim::xidx#5 anim::xidx#1 anim::xidx#2 progress_idx#34 progress_idx#12 progress_idx#10 gen_chargen_sprite::bits#2 gen_chargen_sprite::bits#0 gen_chargen_sprite::bits#1 place_sprites::col#2 place_sprites::col#1 ] -zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$3 ] +zp ZP_BYTE:5 [ anim::x_msb#2 anim::x_msb#1 gen_chargen_sprite::x#6 gen_chargen_sprite::x#1 anim::$2 ] zp ZP_BYTE:6 [ anim::j2#3 anim::j2#2 gen_chargen_sprite::c#3 ] reg byte y [ anim::yidx#3 anim::yidx#0 anim::yidx#6 anim::yidx#1 anim::yidx#2 ] zp ZP_BYTE:7 [ anim::j#2 anim::j#1 gen_chargen_sprite::s_gen#3 gen_chargen_sprite::s_gen#5 gen_chargen_sprite::s_gen#6 gen_chargen_sprite::s_gen#1 ] @@ -333,17 +329,13 @@ reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ] reg byte x [ place_sprites::j2#3 place_sprites::j2#2 ] -reg byte a [ anim::$1 ] -reg byte a [ anim::$4 ] -reg byte a [ anim::$6 ] -reg byte a [ anim::$7 ] +reg byte a [ anim::$3 ] +reg byte a [ anim::$5 ] reg byte a [ anim::j2#1 ] reg byte a [ gen_sintab::$24 ] -reg byte a [ progress_inc::$2 ] -reg byte a [ progress_inc::$3 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ] reg byte x [ gen_chargen_sprite::ch#0 ] -reg byte a [ gen_chargen_sprite::$4 ] -reg byte a [ gen_chargen_sprite::$7 ] +reg byte a [ gen_chargen_sprite::$3 ] +reg byte a [ gen_chargen_sprite::$6 ] reg byte x [ place_sprites::j2#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/unused-method.log b/src/main/java/dk/camelot64/kickc/test/ref/unused-method.log index cc88ed24f..24373afaf 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/unused-method.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/unused-method.log @@ -176,7 +176,7 @@ main::@return: scope:[main] from main to:@end @end: scope:[] from @2 -Consolidated assigned array index constant in assignment *(main::screen#0+0) +Consolidated array index constant in *(main::screen#0+0) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm index bc8cb7f75..9593aebe9 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.asm @@ -35,10 +35,10 @@ animate: { lda #0 sta YPOS+0 b2: - ldx XPOS+1 - dex - stx XPOS+1 - txa + lda XPOS+1 + sec + sbc #1 + sta XPOS+1 cmp #$ff bne b3 lda #$28 @@ -53,10 +53,10 @@ animate: { lda #0 sta YPOS+2 b4: - ldx YPOS+3 - dex - stx YPOS+3 - txa + lda YPOS+3 + sec + sbc #1 + sta YPOS+3 cmp #$ff bne breturn lda #$19 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg index 80d9f3d58..9d8d4b7b0 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.cfg @@ -26,163 +26,150 @@ main::@return: scope:[main] from main::@5 [11] return [ ] ( main:2 [ ] ) to:@return animate: scope:[animate] from main::@4 - [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) - [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:2::animate:9 [ animate::$1 ] ) - [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:2::animate:9 [ ] ) - [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:2::animate:9 [ animate::$2 ] ) - [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) + [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) + [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] ( main:2::animate:9 [ ] ) + [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) to:animate::@7 animate::@7: scope:[animate] from animate - [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) + [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:2::animate:9 [ animate::$5 ] ) - [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) - [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) - [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:2::animate:9 [ animate::$7 ] ) - [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) + [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) + [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] ( main:2::animate:9 [ ] ) + [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) + [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:2::animate:9 [ animate::$10 ] ) - [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:2::animate:9 [ animate::$11 ] ) - [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:2::animate:9 [ ] ) - [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) - [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) + [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) + [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) + [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) - [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:2::animate:9 [ animate::$16 ] ) - [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:2::animate:9 [ ] ) - [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:2::animate:9 [ animate::$17 ] ) - [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) + [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) + [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] ( main:2::animate:9 [ ] ) + [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:2::animate:9 [ animate::$20 ] ) - [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:2::animate:9 [ animate::$21 ] ) - [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:2::animate:9 [ ] ) - [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:2::animate:9 [ animate::$22 ] ) - [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) + [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) + [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] ( main:2::animate:9 [ ] ) + [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) - [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:2::animate:9 [ animate::$25 ] ) - [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) - [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:2::animate:9 [ ] ) - [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:2::animate:9 [ animate::$27 ] ) - [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) + [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) + [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) + [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] ( main:2::animate:9 [ ] ) + [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:2::animate:9 [ animate::$30 ] ) - [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) - [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:2::animate:9 [ ] ) + [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) + [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] ( main:2::animate:9 [ ] ) to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 - [50] return [ ] ( main:2::animate:9 [ ] ) + [37] return [ ] ( main:2::animate:9 [ ] ) to:@return render: scope:[render] from main::@1 - [51] phi() [ ] ( main:2::render:7 [ ] ) + [38] phi() [ ] ( main:2::render:7 [ ] ) to:render::@1 render::@1: scope:[render] from render render::@3 - [52] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) - [52] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) + [39] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) + [39] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - [53] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) - [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) - [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) - [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) + [40] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) + [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) + [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) + [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) to:render::@5 render::@5: scope:[render] from render::@2 - [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) - [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) - [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) - [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) + [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) + [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) + [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) + [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) to:render::@3 render::@3: scope:[render] from render::@5 - [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) - [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) - [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) + [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) + [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) + [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) to:render::@return render::@return: scope:[render] from render::@3 - [65] return [ ] ( main:2::render:7 [ ] ) + [52] return [ ] ( main:2::render:7 [ ] ) to:@return findcol: scope:[findcol] from render::@2 - [66] phi() [ findcol::x#0 findcol::y#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) + [53] phi() [ findcol::x#0 findcol::y#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [67] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [67] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [67] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [68] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) - [69] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) - [70] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [54] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [54] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [54] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [55] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) + [56] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [57] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) to:findcol::@9 findcol::@9: scope:[findcol] from findcol::@1 - [71] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [58] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) to:findcol::@return findcol::@return: scope:[findcol] from findcol::@8 findcol::@9 - [72] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - [73] return [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + [59] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + [60] return [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 - [74] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [61] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) to:findcol::@12 findcol::@12: scope:[findcol] from findcol::@2 - [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) + [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - [76] (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) - [77] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) + [63] (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) + [64] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) to:findcol::@14 findcol::@14: scope:[findcol] from findcol::@5 - [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) - [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) + [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) + [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - [80] (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) - [81] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) + [67] (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) + [68] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) to:findcol::@16 findcol::@16: scope:[findcol] from findcol::@7 - [82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) + [69] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) to:findcol::@8 findcol::@8: scope:[findcol] from findcol::@16 findcol::@21 - [83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) - [83] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) - [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) - [85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) + [70] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) + [70] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) + [71] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) + [72] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) to:findcol::@return findcol::@19: scope:[findcol] from findcol::@8 - [86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) + [73] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) to:findcol::@1 findcol::@21: scope:[findcol] from findcol::@7 - [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) + [74] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) to:findcol::@8 findcol::@6: scope:[findcol] from findcol::@5 - [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) - [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) + [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) + [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) to:findcol::@7 findcol::@4: scope:[findcol] from findcol::@2 - [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) + [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) to:findcol::@5 initscreen: scope:[initscreen] from main - [91] phi() [ ] ( main:2::initscreen:5 [ ] ) + [78] phi() [ ] ( main:2::initscreen:5 [ ] ) to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 - [92] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) - [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) - [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) - [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) + [79] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) + [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) + [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) + [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 - [96] return [ ] ( main:2::initscreen:5 [ ] ) + [83] return [ ] ( main:2::initscreen:5 [ ] ) to:@return diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log index 6def2f315..8deaaf06a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -116,60 +116,47 @@ main::@return: return endproc // main() proc (void()) animate() - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 animate::@1: - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 animate::@2: - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 animate::@3: - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 animate::@4: - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@5 + (byte~) animate::$12 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@5 *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@6 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$15 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@6 + (byte~) animate::$18 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 animate::@6: animate::@5: animate::@return: @@ -211,52 +198,49 @@ proc (byte()) findcol((byte) findcol::x , (byte) findcol::y) (byte) findcol::mincol ← (byte/signed byte/word/signed word) 0 (byte) findcol::i ← (byte/signed byte/word/signed word) 0 findcol::@1: - (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i - (byte) findcol::xp ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS *idx (byte) findcol::i - (byte) findcol::yp ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x == (byte) findcol::xp + (byte) findcol::xp ← *((byte[]) XPOS + (byte) findcol::i) + (byte) findcol::yp ← *((byte[]) YPOS + (byte) findcol::i) + (boolean~) findcol::$0 ← (byte) findcol::x == (byte) findcol::xp + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 + (boolean~) findcol::$2 ← (byte) findcol::y == (byte) findcol::yp (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 - (boolean~) findcol::$4 ← (byte) findcol::y == (byte) findcol::yp - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + if((boolean~) findcol::$3) goto findcol::@3 (byte) findcol::return ← (byte/signed byte/word/signed word) 0 goto findcol::@return findcol::@3: findcol::@2: - (boolean~) findcol::$6 ← (byte) findcol::x < (byte) findcol::xp - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 - (byte~) findcol::$8 ← (byte) findcol::xp - (byte) findcol::x - (byte) findcol::diff ← (byte~) findcol::$8 + (boolean~) findcol::$4 ← (byte) findcol::x < (byte) findcol::xp + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 + (byte~) findcol::$6 ← (byte) findcol::xp - (byte) findcol::x + (byte) findcol::diff ← (byte~) findcol::$6 goto findcol::@5 findcol::@4: - (byte~) findcol::$9 ← (byte) findcol::x - (byte) findcol::xp - (byte) findcol::diff ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x - (byte) findcol::xp + (byte) findcol::diff ← (byte~) findcol::$7 findcol::@5: - (boolean~) findcol::$10 ← (byte) findcol::y < (byte) findcol::yp - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 - (byte~) findcol::$12 ← (byte) findcol::yp - (byte) findcol::y - (byte~) findcol::$13 ← (byte) findcol::diff + (byte~) findcol::$12 - (byte) findcol::diff ← (byte~) findcol::$13 + (boolean~) findcol::$8 ← (byte) findcol::y < (byte) findcol::yp + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 + (byte~) findcol::$10 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$11 ← (byte) findcol::diff + (byte~) findcol::$10 + (byte) findcol::diff ← (byte~) findcol::$11 goto findcol::@7 findcol::@6: - (byte~) findcol::$14 ← (byte) findcol::y - (byte) findcol::yp - (byte~) findcol::$15 ← (byte) findcol::diff + (byte~) findcol::$14 - (byte) findcol::diff ← (byte~) findcol::$15 + (byte~) findcol::$12 ← (byte) findcol::y - (byte) findcol::yp + (byte~) findcol::$13 ← (byte) findcol::diff + (byte~) findcol::$12 + (byte) findcol::diff ← (byte~) findcol::$13 findcol::@7: - (boolean~) findcol::$16 ← (byte) findcol::diff < (byte) findcol::mindiff - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff < (byte) findcol::mindiff + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 (byte) findcol::mindiff ← (byte) findcol::diff - (byte~) findcol::$18 ← (byte[]) COLS *idx (byte) findcol::i - (byte) findcol::mincol ← (byte~) findcol::$18 + (byte) findcol::mincol ← *((byte[]) COLS + (byte) findcol::i) findcol::@8: (byte) findcol::i ← ++ (byte) findcol::i - (boolean~) findcol::$19 ← (byte) findcol::i < (byte) numpoints - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i < (byte) numpoints + if((boolean~) findcol::$16) goto findcol::@1 (byte) findcol::return ← (byte) findcol::mincol goto findcol::@return findcol::@return: @@ -274,37 +258,24 @@ SYMBOLS (byte[]) YPOS (void()) animate() (byte~) animate::$0 -(byte~) animate::$1 -(byte~) animate::$10 -(byte~) animate::$11 +(boolean~) animate::$1 +(boolean~) animate::$10 +(boolean~) animate::$11 (byte~) animate::$12 (boolean~) animate::$13 (boolean~) animate::$14 (byte~) animate::$15 -(byte~) animate::$16 -(byte~) animate::$17 -(boolean~) animate::$18 -(boolean~) animate::$19 -(byte~) animate::$2 -(byte~) animate::$20 -(byte~) animate::$21 -(byte~) animate::$22 -(boolean~) animate::$23 -(boolean~) animate::$24 -(byte~) animate::$25 -(byte~) animate::$26 -(byte~) animate::$27 -(boolean~) animate::$28 -(boolean~) animate::$29 -(boolean~) animate::$3 -(byte~) animate::$30 -(byte~) animate::$31 +(boolean~) animate::$16 +(boolean~) animate::$17 +(byte~) animate::$18 +(boolean~) animate::$2 +(byte~) animate::$3 (boolean~) animate::$4 -(byte~) animate::$5 +(boolean~) animate::$5 (byte~) animate::$6 -(byte~) animate::$7 +(boolean~) animate::$7 (boolean~) animate::$8 -(boolean~) animate::$9 +(byte~) animate::$9 (label) animate::@1 (label) animate::@2 (label) animate::@3 @@ -313,26 +284,23 @@ SYMBOLS (label) animate::@6 (label) animate::@return (byte()) findcol((byte) findcol::x , (byte) findcol::y) -(byte~) findcol::$0 -(byte~) findcol::$1 -(boolean~) findcol::$10 -(boolean~) findcol::$11 +(boolean~) findcol::$0 +(boolean~) findcol::$1 +(byte~) findcol::$10 +(byte~) findcol::$11 (byte~) findcol::$12 (byte~) findcol::$13 -(byte~) findcol::$14 -(byte~) findcol::$15 +(boolean~) findcol::$14 +(boolean~) findcol::$15 (boolean~) findcol::$16 -(boolean~) findcol::$17 -(byte~) findcol::$18 -(boolean~) findcol::$19 (boolean~) findcol::$2 (boolean~) findcol::$3 (boolean~) findcol::$4 (boolean~) findcol::$5 -(boolean~) findcol::$6 -(boolean~) findcol::$7 -(byte~) findcol::$8 -(byte~) findcol::$9 +(byte~) findcol::$6 +(byte~) findcol::$7 +(boolean~) findcol::$8 +(boolean~) findcol::$9 (label) findcol::@1 (label) findcol::@2 (label) findcol::@3 @@ -405,58 +373,48 @@ main::@return: scope:[main] from main::@2 @1: scope:[] from @begin to:@2 animate: scope:[animate] from - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@5 + (byte~) animate::$12 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 @@ -465,20 +423,17 @@ animate::@5: scope:[animate] from animate::@4 animate::@6 to:animate::@return animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@6 + (byte~) animate::$15 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 animate::@12 to:animate::@5 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@6 animate::@return: scope:[animate] from animate::@5 return @@ -537,23 +492,21 @@ findcol: scope:[findcol] from (byte) findcol::i ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 - (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i - (byte) findcol::xp ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS *idx (byte) findcol::i - (byte) findcol::yp ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x == (byte) findcol::xp - (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp ← *((byte[]) XPOS + (byte) findcol::i) + (byte) findcol::yp ← *((byte[]) YPOS + (byte) findcol::i) + (boolean~) findcol::$0 ← (byte) findcol::x == (byte) findcol::xp + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 - (boolean~) findcol::$6 ← (byte) findcol::x < (byte) findcol::xp - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$4 ← (byte) findcol::x < (byte) findcol::xp + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$4 ← (byte) findcol::y == (byte) findcol::yp - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$2 ← (byte) findcol::y == (byte) findcol::yp + (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@11 findcol::@9 to:findcol::@2 @@ -567,46 +520,45 @@ findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 findcol::@18 findcol::@11: scope:[findcol] from to:findcol::@3 findcol::@4: scope:[findcol] from findcol::@13 findcol::@2 - (byte~) findcol::$9 ← (byte) findcol::x - (byte) findcol::xp - (byte) findcol::diff ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x - (byte) findcol::xp + (byte) findcol::diff ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 - (byte~) findcol::$8 ← (byte) findcol::xp - (byte) findcol::x - (byte) findcol::diff ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp - (byte) findcol::x + (byte) findcol::diff ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - (boolean~) findcol::$10 ← (byte) findcol::y < (byte) findcol::yp - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$8 ← (byte) findcol::y < (byte) findcol::yp + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@13: scope:[findcol] from to:findcol::@4 findcol::@6: scope:[findcol] from findcol::@15 findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y - (byte) findcol::yp - (byte~) findcol::$15 ← (byte) findcol::diff + (byte~) findcol::$14 - (byte) findcol::diff ← (byte~) findcol::$15 - to:findcol::@7 -findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$12 ← (byte) findcol::y - (byte) findcol::yp (byte~) findcol::$13 ← (byte) findcol::diff + (byte~) findcol::$12 (byte) findcol::diff ← (byte~) findcol::$13 to:findcol::@7 +findcol::@14: scope:[findcol] from findcol::@5 + (byte~) findcol::$10 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$11 ← (byte) findcol::diff + (byte~) findcol::$10 + (byte) findcol::diff ← (byte~) findcol::$11 + to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - (boolean~) findcol::$16 ← (byte) findcol::diff < (byte) findcol::mindiff - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff < (byte) findcol::mindiff + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@15: scope:[findcol] from to:findcol::@6 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) findcol::i ← ++ (byte) findcol::i - (boolean~) findcol::$19 ← (byte) findcol::i < (byte) numpoints - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i < (byte) numpoints + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::mindiff ← (byte) findcol::diff - (byte~) findcol::$18 ← (byte[]) COLS *idx (byte) findcol::i - (byte) findcol::mincol ← (byte~) findcol::$18 + (byte) findcol::mincol ← *((byte[]) COLS + (byte) findcol::i) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::return ← (byte) findcol::mincol @@ -654,58 +606,48 @@ main::@return: scope:[main] from main::@1 return to:@return animate: scope:[animate] from - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@5 + (byte~) animate::$12 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 @@ -714,20 +656,17 @@ animate::@5: scope:[animate] from animate::@4 to:animate::@return animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@6 + (byte~) animate::$15 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -776,23 +715,21 @@ findcol: scope:[findcol] from (byte) findcol::i ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 - (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i - (byte) findcol::xp ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS *idx (byte) findcol::i - (byte) findcol::yp ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x == (byte) findcol::xp - (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp ← *((byte[]) XPOS + (byte) findcol::i) + (byte) findcol::yp ← *((byte[]) YPOS + (byte) findcol::i) + (boolean~) findcol::$0 ← (byte) findcol::x == (byte) findcol::xp + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 - (boolean~) findcol::$6 ← (byte) findcol::x < (byte) findcol::xp - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$4 ← (byte) findcol::x < (byte) findcol::xp + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$4 ← (byte) findcol::y == (byte) findcol::yp - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$2 ← (byte) findcol::y == (byte) findcol::yp + (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 @@ -804,42 +741,41 @@ findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 return (byte) findcol::return to:@return findcol::@4: scope:[findcol] from findcol::@2 - (byte~) findcol::$9 ← (byte) findcol::x - (byte) findcol::xp - (byte) findcol::diff ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x - (byte) findcol::xp + (byte) findcol::diff ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 - (byte~) findcol::$8 ← (byte) findcol::xp - (byte) findcol::x - (byte) findcol::diff ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp - (byte) findcol::x + (byte) findcol::diff ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - (boolean~) findcol::$10 ← (byte) findcol::y < (byte) findcol::yp - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$8 ← (byte) findcol::y < (byte) findcol::yp + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y - (byte) findcol::yp - (byte~) findcol::$15 ← (byte) findcol::diff + (byte~) findcol::$14 - (byte) findcol::diff ← (byte~) findcol::$15 - to:findcol::@7 -findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$12 ← (byte) findcol::y - (byte) findcol::yp (byte~) findcol::$13 ← (byte) findcol::diff + (byte~) findcol::$12 (byte) findcol::diff ← (byte~) findcol::$13 to:findcol::@7 +findcol::@14: scope:[findcol] from findcol::@5 + (byte~) findcol::$10 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$11 ← (byte) findcol::diff + (byte~) findcol::$10 + (byte) findcol::diff ← (byte~) findcol::$11 + to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - (boolean~) findcol::$16 ← (byte) findcol::diff < (byte) findcol::mindiff - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff < (byte) findcol::mindiff + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) findcol::i ← ++ (byte) findcol::i - (boolean~) findcol::$19 ← (byte) findcol::i < (byte) numpoints - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i < (byte) numpoints + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::mindiff ← (byte) findcol::diff - (byte~) findcol::$18 ← (byte[]) COLS *idx (byte) findcol::i - (byte) findcol::mincol ← (byte~) findcol::$18 + (byte) findcol::mincol ← *((byte[]) COLS + (byte) findcol::i) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::return ← (byte) findcol::mincol @@ -879,58 +815,48 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@5 + (byte~) animate::$12 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 @@ -939,20 +865,17 @@ animate::@5: scope:[animate] from animate::@4 to:animate::@return animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@6 + (byte~) animate::$15 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -1006,23 +929,21 @@ findcol: scope:[findcol] from render::@2 (byte) findcol::i ← (byte/signed byte/word/signed word) 0 to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@8 - (byte~) findcol::$0 ← (byte[]) XPOS *idx (byte) findcol::i - (byte) findcol::xp ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS *idx (byte) findcol::i - (byte) findcol::yp ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x == (byte) findcol::xp - (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp ← *((byte[]) XPOS + (byte) findcol::i) + (byte) findcol::yp ← *((byte[]) YPOS + (byte) findcol::i) + (boolean~) findcol::$0 ← (byte) findcol::x == (byte) findcol::xp + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 - (boolean~) findcol::$6 ← (byte) findcol::x < (byte) findcol::xp - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$4 ← (byte) findcol::x < (byte) findcol::xp + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$4 ← (byte) findcol::y == (byte) findcol::yp - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$2 ← (byte) findcol::y == (byte) findcol::yp + (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 @@ -1034,42 +955,41 @@ findcol::@return: scope:[findcol] from findcol::@10 findcol::@17 return (byte) findcol::return to:@return findcol::@4: scope:[findcol] from findcol::@2 - (byte~) findcol::$9 ← (byte) findcol::x - (byte) findcol::xp - (byte) findcol::diff ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x - (byte) findcol::xp + (byte) findcol::diff ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 - (byte~) findcol::$8 ← (byte) findcol::xp - (byte) findcol::x - (byte) findcol::diff ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp - (byte) findcol::x + (byte) findcol::diff ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - (boolean~) findcol::$10 ← (byte) findcol::y < (byte) findcol::yp - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$8 ← (byte) findcol::y < (byte) findcol::yp + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y - (byte) findcol::yp - (byte~) findcol::$15 ← (byte) findcol::diff + (byte~) findcol::$14 - (byte) findcol::diff ← (byte~) findcol::$15 - to:findcol::@7 -findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$12 ← (byte) findcol::y - (byte) findcol::yp (byte~) findcol::$13 ← (byte) findcol::diff + (byte~) findcol::$12 (byte) findcol::diff ← (byte~) findcol::$13 to:findcol::@7 +findcol::@14: scope:[findcol] from findcol::@5 + (byte~) findcol::$10 ← (byte) findcol::yp - (byte) findcol::y + (byte~) findcol::$11 ← (byte) findcol::diff + (byte~) findcol::$10 + (byte) findcol::diff ← (byte~) findcol::$11 + to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - (boolean~) findcol::$16 ← (byte) findcol::diff < (byte) findcol::mindiff - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff < (byte) findcol::mindiff + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) findcol::i ← ++ (byte) findcol::i - (boolean~) findcol::$19 ← (byte) findcol::i < (byte) numpoints - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i < (byte) numpoints + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::mindiff ← (byte) findcol::diff - (byte~) findcol::$18 ← (byte[]) COLS *idx (byte) findcol::i - (byte) findcol::mincol ← (byte~) findcol::$18 + (byte) findcol::mincol ← *((byte[]) COLS + (byte) findcol::i) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::return ← (byte) findcol::mincol @@ -1153,24 +1073,20 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) @@ -1180,13 +1096,11 @@ animate::@7: scope:[animate] from animate animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) @@ -1196,13 +1110,11 @@ animate::@8: scope:[animate] from animate::@1 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) @@ -1212,13 +1124,11 @@ animate::@9: scope:[animate] from animate::@2 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@5 + (byte~) animate::$12 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) @@ -1231,21 +1141,18 @@ animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@6 + (byte~) animate::$15 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -1351,13 +1258,11 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#7 ← phi( findcol/(byte[]) YPOS#12 findcol::@8/(byte[]) YPOS#13 ) (byte) findcol::i#2 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#7 ← phi( findcol/(byte[]) XPOS#12 findcol::@8/(byte[]) XPOS#13 ) - (byte~) findcol::$0 ← (byte[]) XPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::xp#0 ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::yp#0 ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 - (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#7 + (byte) findcol::i#2) + (byte) findcol::yp#0 ← *((byte[]) YPOS#7 + (byte) findcol::i#2) + (boolean~) findcol::$0 ← (byte) findcol::x#1 == (byte) findcol::xp#0 + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@3/(byte) findcol::mincol#12 ) @@ -1371,9 +1276,9 @@ findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::y#10 ← phi( findcol::@1/(byte) findcol::y#5 findcol::@3/(byte) findcol::y#11 ) (byte) findcol::xp#1 ← phi( findcol::@1/(byte) findcol::xp#0 findcol::@3/(byte) findcol::xp#4 ) (byte) findcol::x#2 ← phi( findcol::@1/(byte) findcol::x#1 findcol::@3/(byte) findcol::x#7 ) - (boolean~) findcol::$6 ← (byte) findcol::x#2 < (byte) findcol::xp#1 - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$4 ← (byte) findcol::x#2 < (byte) findcol::xp#1 + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::mincol#13 ← phi( findcol::@1/(byte) findcol::mincol#11 ) @@ -1387,9 +1292,9 @@ findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::x#8 ← phi( findcol::@1/(byte) findcol::x#1 ) (byte) findcol::yp#1 ← phi( findcol::@1/(byte) findcol::yp#0 ) (byte) findcol::y#1 ← phi( findcol::@1/(byte) findcol::y#5 ) - (boolean~) findcol::$4 ← (byte) findcol::y#1 == (byte) findcol::yp#1 - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$2 ← (byte) findcol::y#1 == (byte) findcol::yp#1 + (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::mincol#12 ← phi( findcol::@9/(byte) findcol::mincol#13 ) @@ -1424,8 +1329,8 @@ findcol::@4: scope:[findcol] from findcol::@2 (byte) findcol::y#7 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::xp#2 ← phi( findcol::@2/(byte) findcol::xp#1 ) (byte) findcol::x#3 ← phi( findcol::@2/(byte) findcol::x#2 ) - (byte~) findcol::$9 ← (byte) findcol::x#3 - (byte) findcol::xp#2 - (byte) findcol::diff#0 ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x#3 - (byte) findcol::xp#2 + (byte) findcol::diff#0 ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::mincol#8 ← phi( findcol::@2/(byte) findcol::mincol#10 ) @@ -1439,8 +1344,8 @@ findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::y#6 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::x#4 ← phi( findcol::@2/(byte) findcol::x#2 ) (byte) findcol::xp#3 ← phi( findcol::@2/(byte) findcol::xp#1 ) - (byte~) findcol::$8 ← (byte) findcol::xp#3 - (byte) findcol::x#4 - (byte) findcol::diff#1 ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp#3 - (byte) findcol::x#4 + (byte) findcol::diff#1 ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::mincol#7 ← phi( findcol::@12/(byte) findcol::mincol#8 findcol::@4/(byte) findcol::mincol#9 ) @@ -1454,9 +1359,9 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#8 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) (byte) findcol::yp#2 ← phi( findcol::@12/(byte) findcol::yp#5 findcol::@4/(byte) findcol::yp#6 ) (byte) findcol::y#2 ← phi( findcol::@12/(byte) findcol::y#6 findcol::@4/(byte) findcol::y#7 ) - (boolean~) findcol::$10 ← (byte) findcol::y#2 < (byte) findcol::yp#2 - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$8 ← (byte) findcol::y#2 < (byte) findcol::yp#2 + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::mincol#6 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -1470,9 +1375,9 @@ findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::diff#4 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::yp#3 ← phi( findcol::@5/(byte) findcol::yp#2 ) (byte) findcol::y#3 ← phi( findcol::@5/(byte) findcol::y#2 ) - (byte~) findcol::$14 ← (byte) findcol::y#3 - (byte) findcol::yp#3 - (byte~) findcol::$15 ← (byte) findcol::diff#4 + (byte~) findcol::$14 - (byte) findcol::diff#2 ← (byte~) findcol::$15 + (byte~) findcol::$12 ← (byte) findcol::y#3 - (byte) findcol::yp#3 + (byte~) findcol::$13 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte) findcol::diff#2 ← (byte~) findcol::$13 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::mincol#5 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -1486,9 +1391,9 @@ findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::diff#5 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::y#4 ← phi( findcol::@5/(byte) findcol::y#2 ) (byte) findcol::yp#4 ← phi( findcol::@5/(byte) findcol::yp#2 ) - (byte~) findcol::$12 ← (byte) findcol::yp#4 - (byte) findcol::y#4 - (byte~) findcol::$13 ← (byte) findcol::diff#5 + (byte~) findcol::$12 - (byte) findcol::diff#3 ← (byte~) findcol::$13 + (byte~) findcol::$10 ← (byte) findcol::yp#4 - (byte) findcol::y#4 + (byte~) findcol::$11 ← (byte) findcol::diff#5 + (byte~) findcol::$10 + (byte) findcol::diff#3 ← (byte~) findcol::$11 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::y#13 ← phi( findcol::@14/(byte) findcol::y#4 findcol::@6/(byte) findcol::y#3 ) @@ -1501,9 +1406,9 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::i#5 ← phi( findcol::@14/(byte) findcol::i#6 findcol::@6/(byte) findcol::i#7 ) (byte) findcol::mindiff#2 ← phi( findcol::@14/(byte) findcol::mindiff#3 findcol::@6/(byte) findcol::mindiff#4 ) (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$16 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte[]) COLS#12 ← phi( findcol::@16/(byte[]) COLS#1 findcol::@7/(byte[]) COLS#2 ) @@ -1516,8 +1421,8 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) numpoints#1 ← phi( findcol::@16/(byte) numpoints#2 findcol::@7/(byte) numpoints#3 ) (byte) findcol::i#3 ← phi( findcol::@16/(byte) findcol::i#4 findcol::@7/(byte) findcol::i#5 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#3 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::y#12 ← phi( findcol::@7/(byte) findcol::y#13 ) @@ -1529,8 +1434,7 @@ findcol::@16: scope:[findcol] from findcol::@7 (byte[]) COLS#1 ← phi( findcol::@7/(byte[]) COLS#2 ) (byte) findcol::diff#7 ← phi( findcol::@7/(byte) findcol::diff#6 ) (byte) findcol::mindiff#1 ← (byte) findcol::diff#7 - (byte~) findcol::$18 ← (byte[]) COLS#1 *idx (byte) findcol::i#4 - (byte) findcol::mincol#1 ← (byte~) findcol::$18 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#4) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::mincol#2 ← phi( findcol::@8/(byte) findcol::mincol#3 ) @@ -1607,24 +1511,20 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) @@ -1634,13 +1534,11 @@ animate::@7: scope:[animate] from animate animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) @@ -1650,13 +1548,11 @@ animate::@8: scope:[animate] from animate::@1 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) @@ -1666,13 +1562,11 @@ animate::@9: scope:[animate] from animate::@2 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@5 + (byte~) animate::$12 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@5 to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) @@ -1685,21 +1579,18 @@ animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@6 + (byte~) animate::$15 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@6 to:animate::@12 animate::@6: scope:[animate] from animate::@11 to:animate::@return animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@12 animate::@5 animate::@6 return @@ -1806,13 +1697,11 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#7 ← phi( findcol/(byte[]) YPOS#12 findcol::@8/(byte[]) YPOS#13 ) (byte) findcol::i#2 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#7 ← phi( findcol/(byte[]) XPOS#12 findcol::@8/(byte[]) XPOS#13 ) - (byte~) findcol::$0 ← (byte[]) XPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::xp#0 ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::yp#0 ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 - (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#7 + (byte) findcol::i#2) + (byte) findcol::yp#0 ← *((byte[]) YPOS#7 + (byte) findcol::i#2) + (boolean~) findcol::$0 ← (byte) findcol::x#1 == (byte) findcol::xp#0 + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@3/(byte) findcol::mincol#12 ) @@ -1826,9 +1715,9 @@ findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::y#10 ← phi( findcol::@1/(byte) findcol::y#5 findcol::@3/(byte) findcol::y#11 ) (byte) findcol::xp#1 ← phi( findcol::@1/(byte) findcol::xp#0 findcol::@3/(byte) findcol::xp#4 ) (byte) findcol::x#2 ← phi( findcol::@1/(byte) findcol::x#1 findcol::@3/(byte) findcol::x#7 ) - (boolean~) findcol::$6 ← (byte) findcol::x#2 < (byte) findcol::xp#1 - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$4 ← (byte) findcol::x#2 < (byte) findcol::xp#1 + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::mincol#13 ← phi( findcol::@1/(byte) findcol::mincol#11 ) @@ -1842,9 +1731,9 @@ findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::x#8 ← phi( findcol::@1/(byte) findcol::x#1 ) (byte) findcol::yp#1 ← phi( findcol::@1/(byte) findcol::yp#0 ) (byte) findcol::y#1 ← phi( findcol::@1/(byte) findcol::y#5 ) - (boolean~) findcol::$4 ← (byte) findcol::y#1 == (byte) findcol::yp#1 - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$2 ← (byte) findcol::y#1 == (byte) findcol::yp#1 + (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::mincol#12 ← phi( findcol::@9/(byte) findcol::mincol#13 ) @@ -1879,8 +1768,8 @@ findcol::@4: scope:[findcol] from findcol::@2 (byte) findcol::y#7 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::xp#2 ← phi( findcol::@2/(byte) findcol::xp#1 ) (byte) findcol::x#3 ← phi( findcol::@2/(byte) findcol::x#2 ) - (byte~) findcol::$9 ← (byte) findcol::x#3 - (byte) findcol::xp#2 - (byte) findcol::diff#0 ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x#3 - (byte) findcol::xp#2 + (byte) findcol::diff#0 ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::mincol#8 ← phi( findcol::@2/(byte) findcol::mincol#10 ) @@ -1894,8 +1783,8 @@ findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::y#6 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::x#4 ← phi( findcol::@2/(byte) findcol::x#2 ) (byte) findcol::xp#3 ← phi( findcol::@2/(byte) findcol::xp#1 ) - (byte~) findcol::$8 ← (byte) findcol::xp#3 - (byte) findcol::x#4 - (byte) findcol::diff#1 ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp#3 - (byte) findcol::x#4 + (byte) findcol::diff#1 ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::mincol#7 ← phi( findcol::@12/(byte) findcol::mincol#8 findcol::@4/(byte) findcol::mincol#9 ) @@ -1909,9 +1798,9 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#8 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) (byte) findcol::yp#2 ← phi( findcol::@12/(byte) findcol::yp#5 findcol::@4/(byte) findcol::yp#6 ) (byte) findcol::y#2 ← phi( findcol::@12/(byte) findcol::y#6 findcol::@4/(byte) findcol::y#7 ) - (boolean~) findcol::$10 ← (byte) findcol::y#2 < (byte) findcol::yp#2 - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$8 ← (byte) findcol::y#2 < (byte) findcol::yp#2 + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::mincol#6 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -1925,9 +1814,9 @@ findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::diff#4 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::yp#3 ← phi( findcol::@5/(byte) findcol::yp#2 ) (byte) findcol::y#3 ← phi( findcol::@5/(byte) findcol::y#2 ) - (byte~) findcol::$14 ← (byte) findcol::y#3 - (byte) findcol::yp#3 - (byte~) findcol::$15 ← (byte) findcol::diff#4 + (byte~) findcol::$14 - (byte) findcol::diff#2 ← (byte~) findcol::$15 + (byte~) findcol::$12 ← (byte) findcol::y#3 - (byte) findcol::yp#3 + (byte~) findcol::$13 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte) findcol::diff#2 ← (byte~) findcol::$13 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::mincol#5 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -1941,9 +1830,9 @@ findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::diff#5 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::y#4 ← phi( findcol::@5/(byte) findcol::y#2 ) (byte) findcol::yp#4 ← phi( findcol::@5/(byte) findcol::yp#2 ) - (byte~) findcol::$12 ← (byte) findcol::yp#4 - (byte) findcol::y#4 - (byte~) findcol::$13 ← (byte) findcol::diff#5 + (byte~) findcol::$12 - (byte) findcol::diff#3 ← (byte~) findcol::$13 + (byte~) findcol::$10 ← (byte) findcol::yp#4 - (byte) findcol::y#4 + (byte~) findcol::$11 ← (byte) findcol::diff#5 + (byte~) findcol::$10 + (byte) findcol::diff#3 ← (byte~) findcol::$11 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::y#13 ← phi( findcol::@14/(byte) findcol::y#4 findcol::@6/(byte) findcol::y#3 ) @@ -1956,9 +1845,9 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::i#5 ← phi( findcol::@14/(byte) findcol::i#6 findcol::@6/(byte) findcol::i#7 ) (byte) findcol::mindiff#2 ← phi( findcol::@14/(byte) findcol::mindiff#3 findcol::@6/(byte) findcol::mindiff#4 ) (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$16 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte[]) COLS#12 ← phi( findcol::@16/(byte[]) COLS#1 findcol::@7/(byte[]) COLS#2 ) @@ -1971,8 +1860,8 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) numpoints#1 ← phi( findcol::@16/(byte) numpoints#2 findcol::@7/(byte) numpoints#3 ) (byte) findcol::i#3 ← phi( findcol::@16/(byte) findcol::i#4 findcol::@7/(byte) findcol::i#5 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#3 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::y#12 ← phi( findcol::@7/(byte) findcol::y#13 ) @@ -1984,8 +1873,7 @@ findcol::@16: scope:[findcol] from findcol::@7 (byte[]) COLS#1 ← phi( findcol::@7/(byte[]) COLS#2 ) (byte) findcol::diff#7 ← phi( findcol::@7/(byte) findcol::diff#6 ) (byte) findcol::mindiff#1 ← (byte) findcol::diff#7 - (byte~) findcol::$18 ← (byte[]) COLS#1 *idx (byte) findcol::i#4 - (byte) findcol::mincol#1 ← (byte~) findcol::$18 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#4) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::mincol#2 ← phi( findcol::@8/(byte) findcol::mincol#3 ) @@ -2132,37 +2020,24 @@ INITIAL SSA SYMBOL TABLE (byte[]) YPOS#9 (void()) animate() (byte~) animate::$0 -(byte~) animate::$1 -(byte~) animate::$10 -(byte~) animate::$11 +(boolean~) animate::$1 +(boolean~) animate::$10 +(boolean~) animate::$11 (byte~) animate::$12 (boolean~) animate::$13 (boolean~) animate::$14 (byte~) animate::$15 -(byte~) animate::$16 -(byte~) animate::$17 -(boolean~) animate::$18 -(boolean~) animate::$19 -(byte~) animate::$2 -(byte~) animate::$20 -(byte~) animate::$21 -(byte~) animate::$22 -(boolean~) animate::$23 -(boolean~) animate::$24 -(byte~) animate::$25 -(byte~) animate::$26 -(byte~) animate::$27 -(boolean~) animate::$28 -(boolean~) animate::$29 -(boolean~) animate::$3 -(byte~) animate::$30 -(byte~) animate::$31 +(boolean~) animate::$16 +(boolean~) animate::$17 +(byte~) animate::$18 +(boolean~) animate::$2 +(byte~) animate::$3 (boolean~) animate::$4 -(byte~) animate::$5 +(boolean~) animate::$5 (byte~) animate::$6 -(byte~) animate::$7 +(boolean~) animate::$7 (boolean~) animate::$8 -(boolean~) animate::$9 +(byte~) animate::$9 (label) animate::@1 (label) animate::@10 (label) animate::@11 @@ -2177,26 +2052,23 @@ INITIAL SSA SYMBOL TABLE (label) animate::@9 (label) animate::@return (byte()) findcol((byte) findcol::x , (byte) findcol::y) -(byte~) findcol::$0 -(byte~) findcol::$1 -(boolean~) findcol::$10 -(boolean~) findcol::$11 +(boolean~) findcol::$0 +(boolean~) findcol::$1 +(byte~) findcol::$10 +(byte~) findcol::$11 (byte~) findcol::$12 (byte~) findcol::$13 -(byte~) findcol::$14 -(byte~) findcol::$15 +(boolean~) findcol::$14 +(boolean~) findcol::$15 (boolean~) findcol::$16 -(boolean~) findcol::$17 -(byte~) findcol::$18 -(boolean~) findcol::$19 (boolean~) findcol::$2 (boolean~) findcol::$3 (boolean~) findcol::$4 (boolean~) findcol::$5 -(boolean~) findcol::$6 -(boolean~) findcol::$7 -(byte~) findcol::$8 -(byte~) findcol::$9 +(byte~) findcol::$6 +(byte~) findcol::$7 +(boolean~) findcol::$8 +(boolean~) findcol::$9 (label) findcol::@1 (label) findcol::@10 (label) findcol::@12 @@ -2454,24 +2326,20 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 - (boolean~) animate::$4 ← ! (boolean~) animate::$3 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$1 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 + (boolean~) animate::$2 ← ! (boolean~) animate::$1 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$9 ← ! (boolean~) animate::$8 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$4 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$5 ← ! (boolean~) animate::$4 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) @@ -2481,13 +2349,11 @@ animate::@7: scope:[animate] from animate animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 - (boolean~) animate::$14 ← ! (boolean~) animate::$13 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$7 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 + (boolean~) animate::$8 ← ! (boolean~) animate::$7 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) @@ -2497,13 +2363,11 @@ animate::@8: scope:[animate] from animate::@1 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 - (boolean~) animate::$19 ← ! (boolean~) animate::$18 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$10 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 + (boolean~) animate::$11 ← ! (boolean~) animate::$10 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) @@ -2513,13 +2377,11 @@ animate::@9: scope:[animate] from animate::@2 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 - (boolean~) animate::$24 ← ! (boolean~) animate::$23 - if((boolean~) animate::$24) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$13 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 + (boolean~) animate::$14 ← ! (boolean~) animate::$13 + if((boolean~) animate::$14) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) @@ -2530,19 +2392,16 @@ animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 - (boolean~) animate::$29 ← ! (boolean~) animate::$28 - if((boolean~) animate::$29) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$16 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 + (boolean~) animate::$17 ← ! (boolean~) animate::$16 + if((boolean~) animate::$17) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -2649,13 +2508,11 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#7 ← phi( findcol/(byte[]) YPOS#12 findcol::@8/(byte[]) YPOS#13 ) (byte) findcol::i#2 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#7 ← phi( findcol/(byte[]) XPOS#12 findcol::@8/(byte[]) XPOS#13 ) - (byte~) findcol::$0 ← (byte[]) XPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::xp#0 ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::yp#0 ← (byte~) findcol::$1 - (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 - (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#7 + (byte) findcol::i#2) + (byte) findcol::yp#0 ← *((byte[]) YPOS#7 + (byte) findcol::i#2) + (boolean~) findcol::$0 ← (byte) findcol::x#1 == (byte) findcol::xp#0 + (boolean~) findcol::$1 ← ! (boolean~) findcol::$0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@3/(byte) findcol::mincol#12 ) @@ -2669,9 +2526,9 @@ findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::y#10 ← phi( findcol::@1/(byte) findcol::y#5 findcol::@3/(byte) findcol::y#11 ) (byte) findcol::xp#1 ← phi( findcol::@1/(byte) findcol::xp#0 findcol::@3/(byte) findcol::xp#4 ) (byte) findcol::x#2 ← phi( findcol::@1/(byte) findcol::x#1 findcol::@3/(byte) findcol::x#7 ) - (boolean~) findcol::$6 ← (byte) findcol::x#2 < (byte) findcol::xp#1 - (boolean~) findcol::$7 ← ! (boolean~) findcol::$6 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$4 ← (byte) findcol::x#2 < (byte) findcol::xp#1 + (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::mincol#13 ← phi( findcol::@1/(byte) findcol::mincol#11 ) @@ -2685,9 +2542,9 @@ findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::x#8 ← phi( findcol::@1/(byte) findcol::x#1 ) (byte) findcol::yp#1 ← phi( findcol::@1/(byte) findcol::yp#0 ) (byte) findcol::y#1 ← phi( findcol::@1/(byte) findcol::y#5 ) - (boolean~) findcol::$4 ← (byte) findcol::y#1 == (byte) findcol::yp#1 - (boolean~) findcol::$5 ← ! (boolean~) findcol::$4 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$2 ← (byte) findcol::y#1 == (byte) findcol::yp#1 + (boolean~) findcol::$3 ← ! (boolean~) findcol::$2 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::mincol#12 ← phi( findcol::@9/(byte) findcol::mincol#13 ) @@ -2722,8 +2579,8 @@ findcol::@4: scope:[findcol] from findcol::@2 (byte) findcol::y#7 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::xp#2 ← phi( findcol::@2/(byte) findcol::xp#1 ) (byte) findcol::x#3 ← phi( findcol::@2/(byte) findcol::x#2 ) - (byte~) findcol::$9 ← (byte) findcol::x#3 - (byte) findcol::xp#2 - (byte) findcol::diff#0 ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x#3 - (byte) findcol::xp#2 + (byte) findcol::diff#0 ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::mincol#8 ← phi( findcol::@2/(byte) findcol::mincol#10 ) @@ -2737,8 +2594,8 @@ findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::y#6 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::x#4 ← phi( findcol::@2/(byte) findcol::x#2 ) (byte) findcol::xp#3 ← phi( findcol::@2/(byte) findcol::xp#1 ) - (byte~) findcol::$8 ← (byte) findcol::xp#3 - (byte) findcol::x#4 - (byte) findcol::diff#1 ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp#3 - (byte) findcol::x#4 + (byte) findcol::diff#1 ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::mincol#7 ← phi( findcol::@12/(byte) findcol::mincol#8 findcol::@4/(byte) findcol::mincol#9 ) @@ -2752,9 +2609,9 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#8 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) (byte) findcol::yp#2 ← phi( findcol::@12/(byte) findcol::yp#5 findcol::@4/(byte) findcol::yp#6 ) (byte) findcol::y#2 ← phi( findcol::@12/(byte) findcol::y#6 findcol::@4/(byte) findcol::y#7 ) - (boolean~) findcol::$10 ← (byte) findcol::y#2 < (byte) findcol::yp#2 - (boolean~) findcol::$11 ← ! (boolean~) findcol::$10 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$8 ← (byte) findcol::y#2 < (byte) findcol::yp#2 + (boolean~) findcol::$9 ← ! (boolean~) findcol::$8 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::mincol#6 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -2768,9 +2625,9 @@ findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::diff#4 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::yp#3 ← phi( findcol::@5/(byte) findcol::yp#2 ) (byte) findcol::y#3 ← phi( findcol::@5/(byte) findcol::y#2 ) - (byte~) findcol::$14 ← (byte) findcol::y#3 - (byte) findcol::yp#3 - (byte~) findcol::$15 ← (byte) findcol::diff#4 + (byte~) findcol::$14 - (byte) findcol::diff#2 ← (byte~) findcol::$15 + (byte~) findcol::$12 ← (byte) findcol::y#3 - (byte) findcol::yp#3 + (byte~) findcol::$13 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte) findcol::diff#2 ← (byte~) findcol::$13 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::mincol#5 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -2784,9 +2641,9 @@ findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::diff#5 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::y#4 ← phi( findcol::@5/(byte) findcol::y#2 ) (byte) findcol::yp#4 ← phi( findcol::@5/(byte) findcol::yp#2 ) - (byte~) findcol::$12 ← (byte) findcol::yp#4 - (byte) findcol::y#4 - (byte~) findcol::$13 ← (byte) findcol::diff#5 + (byte~) findcol::$12 - (byte) findcol::diff#3 ← (byte~) findcol::$13 + (byte~) findcol::$10 ← (byte) findcol::yp#4 - (byte) findcol::y#4 + (byte~) findcol::$11 ← (byte) findcol::diff#5 + (byte~) findcol::$10 + (byte) findcol::diff#3 ← (byte~) findcol::$11 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::y#13 ← phi( findcol::@14/(byte) findcol::y#4 findcol::@6/(byte) findcol::y#3 ) @@ -2799,9 +2656,9 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::i#5 ← phi( findcol::@14/(byte) findcol::i#6 findcol::@6/(byte) findcol::i#7 ) (byte) findcol::mindiff#2 ← phi( findcol::@14/(byte) findcol::mindiff#3 findcol::@6/(byte) findcol::mindiff#4 ) (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$16 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 - (boolean~) findcol::$17 ← ! (boolean~) findcol::$16 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$14 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 + (boolean~) findcol::$15 ← ! (boolean~) findcol::$14 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte[]) COLS#12 ← phi( findcol::@16/(byte[]) COLS#1 findcol::@7/(byte[]) COLS#2 ) @@ -2814,8 +2671,8 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) numpoints#1 ← phi( findcol::@16/(byte) numpoints#2 findcol::@7/(byte) numpoints#3 ) (byte) findcol::i#3 ← phi( findcol::@16/(byte) findcol::i#4 findcol::@7/(byte) findcol::i#5 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#3 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::y#12 ← phi( findcol::@7/(byte) findcol::y#13 ) @@ -2827,8 +2684,7 @@ findcol::@16: scope:[findcol] from findcol::@7 (byte[]) COLS#1 ← phi( findcol::@7/(byte[]) COLS#2 ) (byte) findcol::diff#7 ← phi( findcol::@7/(byte) findcol::diff#6 ) (byte) findcol::mindiff#1 ← (byte) findcol::diff#7 - (byte~) findcol::$18 ← (byte[]) COLS#1 *idx (byte) findcol::i#4 - (byte) findcol::mincol#1 ← (byte~) findcol::$18 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#4) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::mincol#2 ← phi( findcol::@8/(byte) findcol::mincol#3 ) @@ -2846,17 +2702,17 @@ findcol::@17: scope:[findcol] from findcol::@8 to:@end @end: scope:[] from @5 -Inversing boolean not (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 from (boolean~) animate::$3 ← (byte~) animate::$2 == (byte/signed byte/word/signed word) 40 -Inversing boolean not (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 from (boolean~) animate::$8 ← (byte~) animate::$7 == (byte/signed byte/word/signed word) 25 -Inversing boolean not (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 from (boolean~) animate::$13 ← (byte~) animate::$12 == (byte/word/signed word) 255 -Inversing boolean not (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 from (boolean~) animate::$18 ← (byte~) animate::$17 == (byte/signed byte/word/signed word) 25 -Inversing boolean not (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 from (boolean~) animate::$23 ← (byte~) animate::$22 == (byte/word/signed word) 255 -Inversing boolean not (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 from (boolean~) animate::$28 ← (byte~) animate::$27 >= (byte/signed byte/word/signed word) 40 -Inversing boolean not (boolean~) findcol::$3 ← (byte) findcol::x#1 != (byte) findcol::xp#0 from (boolean~) findcol::$2 ← (byte) findcol::x#1 == (byte) findcol::xp#0 -Inversing boolean not (boolean~) findcol::$7 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 from (boolean~) findcol::$6 ← (byte) findcol::x#2 < (byte) findcol::xp#1 -Inversing boolean not (boolean~) findcol::$5 ← (byte) findcol::y#1 != (byte) findcol::yp#1 from (boolean~) findcol::$4 ← (byte) findcol::y#1 == (byte) findcol::yp#1 -Inversing boolean not (boolean~) findcol::$11 ← (byte) findcol::y#2 >= (byte) findcol::yp#2 from (boolean~) findcol::$10 ← (byte) findcol::y#2 < (byte) findcol::yp#2 -Inversing boolean not (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#2 from (boolean~) findcol::$16 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 +Inversing boolean not (boolean~) animate::$2 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 40 from (boolean~) animate::$1 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 40 +Inversing boolean not (boolean~) animate::$5 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 25 from (boolean~) animate::$4 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) == (byte/signed byte/word/signed word) 25 +Inversing boolean not (boolean~) animate::$8 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) != (byte/word/signed word) 255 from (boolean~) animate::$7 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) == (byte/word/signed word) 255 +Inversing boolean not (boolean~) animate::$11 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) != (byte/signed byte/word/signed word) 25 from (boolean~) animate::$10 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) == (byte/signed byte/word/signed word) 25 +Inversing boolean not (boolean~) animate::$14 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) != (byte/word/signed word) 255 from (boolean~) animate::$13 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) == (byte/word/signed word) 255 +Inversing boolean not (boolean~) animate::$17 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) < (byte/signed byte/word/signed word) 40 from (boolean~) animate::$16 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) >= (byte/signed byte/word/signed word) 40 +Inversing boolean not (boolean~) findcol::$1 ← (byte) findcol::x#1 != (byte) findcol::xp#0 from (boolean~) findcol::$0 ← (byte) findcol::x#1 == (byte) findcol::xp#0 +Inversing boolean not (boolean~) findcol::$5 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 from (boolean~) findcol::$4 ← (byte) findcol::x#2 < (byte) findcol::xp#1 +Inversing boolean not (boolean~) findcol::$3 ← (byte) findcol::y#1 != (byte) findcol::yp#1 from (boolean~) findcol::$2 ← (byte) findcol::y#1 == (byte) findcol::yp#1 +Inversing boolean not (boolean~) findcol::$9 ← (byte) findcol::y#2 >= (byte) findcol::yp#2 from (boolean~) findcol::$8 ← (byte) findcol::y#2 < (byte) findcol::yp#2 +Inversing boolean not (boolean~) findcol::$15 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#2 from (boolean~) findcol::$14 ← (byte) findcol::diff#6 < (byte) findcol::mindiff#2 Succesful SSA optimization Pass2UnaryNotSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -2915,22 +2771,18 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#8 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$2 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#9 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#2 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#9 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$5 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate (byte[]) YPOS#9 ← phi( animate/(byte[]) YPOS#8 ) @@ -2940,12 +2792,10 @@ animate::@7: scope:[animate] from animate animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#2 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#9 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$8 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) != (byte/word/signed word) 255 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 (byte[]) XPOS#10 ← phi( animate::@1/(byte[]) XPOS#9 ) @@ -2955,12 +2805,10 @@ animate::@8: scope:[animate] from animate::@1 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#16 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#4 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#11 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$11 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 (byte[]) YPOS#11 ← phi( animate::@2/(byte[]) YPOS#10 ) @@ -2970,12 +2818,10 @@ animate::@9: scope:[animate] from animate::@2 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#16 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#5 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 - if((boolean~) animate::$24) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$14 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) != (byte/word/signed word) 255 + if((boolean~) animate::$14) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 (byte[]) XPOS#15 ← phi( animate::@3/(byte[]) XPOS#16 ) @@ -2986,18 +2832,15 @@ animate::@11: scope:[animate] from animate::@4 (byte[]) XPOS#5 ← phi( animate::@4/(byte[]) XPOS#11 ) (byte[]) YPOS#6 ← phi( animate::@4/(byte[]) YPOS#4 ) *((byte[]) YPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#5 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$29) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$17 ← *((byte[]) XPOS#5 + (byte/signed byte/word/signed word) 3) < (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$17) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 (byte[]) XPOS#6 ← phi( animate::@11/(byte[]) XPOS#5 ) - (byte~) animate::$30 ← (byte[]) XPOS#6 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#6 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -3104,12 +2947,10 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#7 ← phi( findcol/(byte[]) YPOS#12 findcol::@8/(byte[]) YPOS#13 ) (byte) findcol::i#2 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#7 ← phi( findcol/(byte[]) XPOS#12 findcol::@8/(byte[]) XPOS#13 ) - (byte~) findcol::$0 ← (byte[]) XPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::xp#0 ← (byte~) findcol::$0 - (byte~) findcol::$1 ← (byte[]) YPOS#7 *idx (byte) findcol::i#2 - (byte) findcol::yp#0 ← (byte~) findcol::$1 - (boolean~) findcol::$3 ← (byte) findcol::x#1 != (byte) findcol::xp#0 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#7 + (byte) findcol::i#2) + (byte) findcol::yp#0 ← *((byte[]) YPOS#7 + (byte) findcol::i#2) + (boolean~) findcol::$1 ← (byte) findcol::x#1 != (byte) findcol::xp#0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@3/(byte) findcol::mincol#12 ) @@ -3123,8 +2964,8 @@ findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::y#10 ← phi( findcol::@1/(byte) findcol::y#5 findcol::@3/(byte) findcol::y#11 ) (byte) findcol::xp#1 ← phi( findcol::@1/(byte) findcol::xp#0 findcol::@3/(byte) findcol::xp#4 ) (byte) findcol::x#2 ← phi( findcol::@1/(byte) findcol::x#1 findcol::@3/(byte) findcol::x#7 ) - (boolean~) findcol::$7 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$5 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::mincol#13 ← phi( findcol::@1/(byte) findcol::mincol#11 ) @@ -3138,8 +2979,8 @@ findcol::@9: scope:[findcol] from findcol::@1 (byte) findcol::x#8 ← phi( findcol::@1/(byte) findcol::x#1 ) (byte) findcol::yp#1 ← phi( findcol::@1/(byte) findcol::yp#0 ) (byte) findcol::y#1 ← phi( findcol::@1/(byte) findcol::y#5 ) - (boolean~) findcol::$5 ← (byte) findcol::y#1 != (byte) findcol::yp#1 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$3 ← (byte) findcol::y#1 != (byte) findcol::yp#1 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 (byte) findcol::mincol#12 ← phi( findcol::@9/(byte) findcol::mincol#13 ) @@ -3174,8 +3015,8 @@ findcol::@4: scope:[findcol] from findcol::@2 (byte) findcol::y#7 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::xp#2 ← phi( findcol::@2/(byte) findcol::xp#1 ) (byte) findcol::x#3 ← phi( findcol::@2/(byte) findcol::x#2 ) - (byte~) findcol::$9 ← (byte) findcol::x#3 - (byte) findcol::xp#2 - (byte) findcol::diff#0 ← (byte~) findcol::$9 + (byte~) findcol::$7 ← (byte) findcol::x#3 - (byte) findcol::xp#2 + (byte) findcol::diff#0 ← (byte~) findcol::$7 to:findcol::@5 findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::mincol#8 ← phi( findcol::@2/(byte) findcol::mincol#10 ) @@ -3189,8 +3030,8 @@ findcol::@12: scope:[findcol] from findcol::@2 (byte) findcol::y#6 ← phi( findcol::@2/(byte) findcol::y#10 ) (byte) findcol::x#4 ← phi( findcol::@2/(byte) findcol::x#2 ) (byte) findcol::xp#3 ← phi( findcol::@2/(byte) findcol::xp#1 ) - (byte~) findcol::$8 ← (byte) findcol::xp#3 - (byte) findcol::x#4 - (byte) findcol::diff#1 ← (byte~) findcol::$8 + (byte~) findcol::$6 ← (byte) findcol::xp#3 - (byte) findcol::x#4 + (byte) findcol::diff#1 ← (byte~) findcol::$6 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::mincol#7 ← phi( findcol::@12/(byte) findcol::mincol#8 findcol::@4/(byte) findcol::mincol#9 ) @@ -3204,8 +3045,8 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#8 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) (byte) findcol::yp#2 ← phi( findcol::@12/(byte) findcol::yp#5 findcol::@4/(byte) findcol::yp#6 ) (byte) findcol::y#2 ← phi( findcol::@12/(byte) findcol::y#6 findcol::@4/(byte) findcol::y#7 ) - (boolean~) findcol::$11 ← (byte) findcol::y#2 >= (byte) findcol::yp#2 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$9 ← (byte) findcol::y#2 >= (byte) findcol::yp#2 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::mincol#6 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -3219,9 +3060,9 @@ findcol::@6: scope:[findcol] from findcol::@5 (byte) findcol::diff#4 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::yp#3 ← phi( findcol::@5/(byte) findcol::yp#2 ) (byte) findcol::y#3 ← phi( findcol::@5/(byte) findcol::y#2 ) - (byte~) findcol::$14 ← (byte) findcol::y#3 - (byte) findcol::yp#3 - (byte~) findcol::$15 ← (byte) findcol::diff#4 + (byte~) findcol::$14 - (byte) findcol::diff#2 ← (byte~) findcol::$15 + (byte~) findcol::$12 ← (byte) findcol::y#3 - (byte) findcol::yp#3 + (byte~) findcol::$13 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte) findcol::diff#2 ← (byte~) findcol::$13 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::mincol#5 ← phi( findcol::@5/(byte) findcol::mincol#7 ) @@ -3235,9 +3076,9 @@ findcol::@14: scope:[findcol] from findcol::@5 (byte) findcol::diff#5 ← phi( findcol::@5/(byte) findcol::diff#8 ) (byte) findcol::y#4 ← phi( findcol::@5/(byte) findcol::y#2 ) (byte) findcol::yp#4 ← phi( findcol::@5/(byte) findcol::yp#2 ) - (byte~) findcol::$12 ← (byte) findcol::yp#4 - (byte) findcol::y#4 - (byte~) findcol::$13 ← (byte) findcol::diff#5 + (byte~) findcol::$12 - (byte) findcol::diff#3 ← (byte~) findcol::$13 + (byte~) findcol::$10 ← (byte) findcol::yp#4 - (byte) findcol::y#4 + (byte~) findcol::$11 ← (byte) findcol::diff#5 + (byte~) findcol::$10 + (byte) findcol::diff#3 ← (byte~) findcol::$11 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::y#13 ← phi( findcol::@14/(byte) findcol::y#4 findcol::@6/(byte) findcol::y#3 ) @@ -3250,8 +3091,8 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::i#5 ← phi( findcol::@14/(byte) findcol::i#6 findcol::@6/(byte) findcol::i#7 ) (byte) findcol::mindiff#2 ← phi( findcol::@14/(byte) findcol::mindiff#3 findcol::@6/(byte) findcol::mindiff#4 ) (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#2 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$15 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#2 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte[]) COLS#12 ← phi( findcol::@16/(byte[]) COLS#1 findcol::@7/(byte[]) COLS#2 ) @@ -3264,8 +3105,8 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) numpoints#1 ← phi( findcol::@16/(byte) numpoints#2 findcol::@7/(byte) numpoints#3 ) (byte) findcol::i#3 ← phi( findcol::@16/(byte) findcol::i#4 findcol::@7/(byte) findcol::i#5 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#3 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 (byte) findcol::y#12 ← phi( findcol::@7/(byte) findcol::y#13 ) @@ -3277,8 +3118,7 @@ findcol::@16: scope:[findcol] from findcol::@7 (byte[]) COLS#1 ← phi( findcol::@7/(byte[]) COLS#2 ) (byte) findcol::diff#7 ← phi( findcol::@7/(byte) findcol::diff#6 ) (byte) findcol::mindiff#1 ← (byte) findcol::diff#7 - (byte~) findcol::$18 ← (byte[]) COLS#1 *idx (byte) findcol::i#4 - (byte) findcol::mincol#1 ← (byte~) findcol::$18 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#4) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 (byte) findcol::mincol#2 ← phi( findcol::@8/(byte) findcol::mincol#3 ) @@ -3354,10 +3194,10 @@ Alias (byte) numpoints#14 = (byte) numpoints#16 (byte) numpoints#18 Alias (byte[]) COLS#14 = (byte[]) COLS#16 (byte[]) COLS#18 Alias (byte) render::col#0 = (byte~) render::$0 Alias (byte*) render::colline#1 = (byte*~) render::$2 -Alias (byte) findcol::xp#0 = (byte~) findcol::$0 (byte) findcol::xp#5 (byte) findcol::xp#4 -Alias (byte) findcol::yp#0 = (byte~) findcol::$1 (byte) findcol::yp#1 (byte) findcol::yp#8 Alias (byte) findcol::y#1 = (byte) findcol::y#5 (byte) findcol::y#11 +Alias (byte) findcol::yp#0 = (byte) findcol::yp#1 (byte) findcol::yp#8 Alias (byte) findcol::x#1 = (byte) findcol::x#8 (byte) findcol::x#7 +Alias (byte) findcol::xp#0 = (byte) findcol::xp#5 (byte) findcol::xp#4 Alias (byte) findcol::mindiff#10 = (byte) findcol::mindiff#12 (byte) findcol::mindiff#9 Alias (byte) findcol::i#12 = (byte) findcol::i#13 (byte) findcol::i#2 Alias (byte) numpoints#10 = (byte) numpoints#13 (byte) numpoints#11 @@ -3377,8 +3217,8 @@ Alias (byte[]) COLS#6 = (byte[]) COLS#7 (byte[]) COLS#8 Alias (byte[]) XPOS#31 = (byte[]) XPOS#32 (byte[]) XPOS#33 Alias (byte[]) YPOS#29 = (byte[]) YPOS#30 (byte[]) YPOS#32 Alias (byte) findcol::mincol#10 = (byte) findcol::mincol#9 (byte) findcol::mincol#8 -Alias (byte) findcol::diff#0 = (byte~) findcol::$9 -Alias (byte) findcol::diff#1 = (byte~) findcol::$8 +Alias (byte) findcol::diff#0 = (byte~) findcol::$7 +Alias (byte) findcol::diff#1 = (byte~) findcol::$6 Alias (byte) findcol::y#2 = (byte) findcol::y#3 (byte) findcol::y#4 Alias (byte) findcol::yp#2 = (byte) findcol::yp#3 (byte) findcol::yp#4 Alias (byte) findcol::diff#4 = (byte) findcol::diff#8 (byte) findcol::diff#5 @@ -3390,8 +3230,8 @@ Alias (byte[]) XPOS#24 = (byte[]) XPOS#25 (byte[]) XPOS#29 Alias (byte[]) YPOS#21 = (byte[]) YPOS#22 (byte[]) YPOS#27 Alias (byte) findcol::x#11 = (byte) findcol::x#12 (byte) findcol::x#13 Alias (byte) findcol::mincol#5 = (byte) findcol::mincol#6 (byte) findcol::mincol#7 -Alias (byte) findcol::diff#2 = (byte~) findcol::$15 -Alias (byte) findcol::diff#3 = (byte~) findcol::$13 +Alias (byte) findcol::diff#2 = (byte~) findcol::$13 +Alias (byte) findcol::diff#3 = (byte~) findcol::$11 Alias (byte) findcol::diff#6 = (byte) findcol::diff#7 (byte) findcol::mindiff#1 Alias (byte[]) COLS#1 = (byte[]) COLS#2 Alias (byte) findcol::i#4 = (byte) findcol::i#5 @@ -3400,7 +3240,6 @@ Alias (byte[]) XPOS#18 = (byte[]) XPOS#19 Alias (byte[]) YPOS#16 = (byte[]) YPOS#17 Alias (byte) findcol::x#10 = (byte) findcol::x#9 Alias (byte) findcol::y#12 = (byte) findcol::y#13 -Alias (byte) findcol::mincol#1 = (byte~) findcol::$18 Alias (byte) findcol::mincol#2 = (byte) findcol::mincol#3 (byte) findcol::return#3 Alias (byte*) SCREEN#0 = (byte*) SCREEN#4 Alias (byte) FILL#0 = (byte) FILL#4 @@ -3452,22 +3291,18 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#8 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#14 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$2 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 (byte[]) XPOS#10 ← phi( animate/(byte[]) XPOS#1 animate::@7/(byte[]) XPOS#1 ) (byte[]) YPOS#1 ← phi( animate/(byte[]) YPOS#8 animate::@7/(byte[]) YPOS#8 ) - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$5 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -3475,12 +3310,10 @@ animate::@7: scope:[animate] from animate animate::@2: scope:[animate] from animate::@1 animate::@8 (byte[]) YPOS#10 ← phi( animate::@1/(byte[]) YPOS#1 animate::@8/(byte[]) YPOS#1 ) (byte[]) XPOS#3 ← phi( animate::@1/(byte[]) XPOS#10 animate::@8/(byte[]) XPOS#10 ) - (byte~) animate::$10 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#3 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$8 ← *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) != (byte/word/signed word) 255 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 @@ -3488,12 +3321,10 @@ animate::@8: scope:[animate] from animate::@1 animate::@3: scope:[animate] from animate::@2 animate::@9 (byte[]) XPOS#15 ← phi( animate::@2/(byte[]) XPOS#3 animate::@9/(byte[]) XPOS#3 ) (byte[]) YPOS#3 ← phi( animate::@2/(byte[]) YPOS#10 animate::@9/(byte[]) YPOS#10 ) - (byte~) animate::$15 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#3 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$11 ← *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS#3 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 @@ -3501,29 +3332,24 @@ animate::@9: scope:[animate] from animate::@2 animate::@4: scope:[animate] from animate::@10 animate::@3 (byte[]) XPOS#11 ← phi( animate::@10/(byte[]) XPOS#15 animate::@3/(byte[]) XPOS#15 ) (byte[]) YPOS#4 ← phi( animate::@10/(byte[]) YPOS#3 animate::@3/(byte[]) YPOS#3 ) - (byte~) animate::$20 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#4 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 - if((boolean~) animate::$24) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$14 ← *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) != (byte/word/signed word) 255 + if((boolean~) animate::$14) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS#3 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS#4 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#11 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#11 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$29) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$17 ← *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) < (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$17) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#11 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#11 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -3614,10 +3440,10 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#33 ← phi( findcol/(byte[]) YPOS#12 findcol::@8/(byte[]) YPOS#13 ) (byte) findcol::i#12 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#34 ← phi( findcol/(byte[]) XPOS#12 findcol::@8/(byte[]) XPOS#13 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#34 *idx (byte) findcol::i#12 - (byte) findcol::yp#0 ← (byte[]) YPOS#33 *idx (byte) findcol::i#12 - (boolean~) findcol::$3 ← (byte) findcol::x#1 != (byte) findcol::xp#0 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#34 + (byte) findcol::i#12) + (byte) findcol::yp#0 ← *((byte[]) YPOS#33 + (byte) findcol::i#12) + (boolean~) findcol::$1 ← (byte) findcol::x#1 != (byte) findcol::xp#0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::mincol#10 ← phi( findcol::@1/(byte) findcol::mincol#11 findcol::@3/(byte) findcol::mincol#11 ) @@ -3631,12 +3457,12 @@ findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 (byte) findcol::y#10 ← phi( findcol::@1/(byte) findcol::y#1 findcol::@3/(byte) findcol::y#1 ) (byte) findcol::xp#1 ← phi( findcol::@1/(byte) findcol::xp#0 findcol::@3/(byte) findcol::xp#0 ) (byte) findcol::x#2 ← phi( findcol::@1/(byte) findcol::x#1 findcol::@3/(byte) findcol::x#1 ) - (boolean~) findcol::$7 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$5 ← (byte) findcol::x#2 >= (byte) findcol::xp#1 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$5 ← (byte) findcol::y#1 != (byte) findcol::yp#0 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$3 ← (byte) findcol::y#1 != (byte) findcol::yp#0 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 @@ -3665,16 +3491,16 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) (byte) findcol::yp#2 ← phi( findcol::@12/(byte) findcol::yp#5 findcol::@4/(byte) findcol::yp#5 ) (byte) findcol::y#2 ← phi( findcol::@12/(byte) findcol::y#10 findcol::@4/(byte) findcol::y#10 ) - (boolean~) findcol::$11 ← (byte) findcol::y#2 >= (byte) findcol::yp#2 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$9 ← (byte) findcol::y#2 >= (byte) findcol::yp#2 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#2 - (byte) findcol::yp#2 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#2 - (byte) findcol::yp#2 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#2 - (byte) findcol::y#2 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#2 - (byte) findcol::y#2 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::y#12 ← phi( findcol::@14/(byte) findcol::y#2 findcol::@6/(byte) findcol::y#2 ) @@ -3687,8 +3513,8 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::i#4 ← phi( findcol::@14/(byte) findcol::i#6 findcol::@6/(byte) findcol::i#6 ) (byte) findcol::mindiff#2 ← phi( findcol::@14/(byte) findcol::mindiff#3 findcol::@6/(byte) findcol::mindiff#3 ) (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#2 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$15 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#2 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte[]) COLS#12 ← phi( findcol::@16/(byte[]) COLS#1 findcol::@7/(byte[]) COLS#1 ) @@ -3701,11 +3527,11 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) numpoints#1 ← phi( findcol::@16/(byte) numpoints#2 findcol::@7/(byte) numpoints#2 ) (byte) findcol::i#3 ← phi( findcol::@16/(byte) findcol::i#4 findcol::@7/(byte) findcol::i#4 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#3 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#1 *idx (byte) findcol::i#4 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#4) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -3798,70 +3624,57 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#1 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#14 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$2 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$5 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$8 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) != (byte/word/signed word) 255 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$11 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 - if((boolean~) animate::$24) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$14 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) != (byte/word/signed word) 255 + if((boolean~) animate::$14) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$29) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$17 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) < (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$17) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -3952,18 +3765,18 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#13 ← phi( findcol/(byte[]) YPOS#12 findcol::@8/(byte[]) YPOS#13 ) (byte) findcol::i#10 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#13 ← phi( findcol/(byte[]) XPOS#12 findcol::@8/(byte[]) XPOS#13 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#13 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#13 *idx (byte) findcol::i#10 - (boolean~) findcol::$3 ← (byte) findcol::x#1 != (byte) findcol::xp#0 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#13 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#13 + (byte) findcol::i#10) + (boolean~) findcol::$1 ← (byte) findcol::x#1 != (byte) findcol::xp#0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 - (boolean~) findcol::$7 ← (byte) findcol::x#1 >= (byte) findcol::xp#0 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$5 ← (byte) findcol::x#1 >= (byte) findcol::xp#0 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$5 ← (byte) findcol::y#1 != (byte) findcol::yp#0 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$3 ← (byte) findcol::y#1 != (byte) findcol::yp#0 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 @@ -3982,31 +3795,31 @@ findcol::@12: scope:[findcol] from findcol::@2 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) - (boolean~) findcol::$11 ← (byte) findcol::y#1 >= (byte) findcol::yp#0 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$9 ← (byte) findcol::y#1 >= (byte) findcol::yp#0 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#1 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#1 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#1 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#1 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#10 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$15 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#10 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@7/(byte) findcol::mindiff#10 ) (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@7/(byte) findcol::mincol#10 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#10 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#1 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -4105,70 +3918,57 @@ main::@return: scope:[main] from main::@5 animate: scope:[animate] from main::@4 (byte[]) YPOS#1 ← phi( main::@4/(byte[]) YPOS#14 ) (byte[]) XPOS#1 ← phi( main::@4/(byte[]) XPOS#14 ) - (byte~) animate::$0 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$2 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$5 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$8 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) != (byte/word/signed word) 255 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$11 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#1 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 - if((boolean~) animate::$24) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$14 ← *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) != (byte/word/signed word) 255 + if((boolean~) animate::$14) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$29) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$17 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) < (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$17) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#1 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#1 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4259,18 +4059,18 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte[]) YPOS#13 ← phi( findcol/(byte[]) YPOS#12 ) (byte) findcol::i#10 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) (byte[]) XPOS#13 ← phi( findcol/(byte[]) XPOS#12 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#13 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#13 *idx (byte) findcol::i#10 - (boolean~) findcol::$3 ← (byte) findcol::x#1 != (byte) findcol::xp#0 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#13 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#13 + (byte) findcol::i#10) + (boolean~) findcol::$1 ← (byte) findcol::x#1 != (byte) findcol::xp#0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 - (boolean~) findcol::$7 ← (byte) findcol::x#1 >= (byte) findcol::xp#0 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$5 ← (byte) findcol::x#1 >= (byte) findcol::xp#0 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$5 ← (byte) findcol::y#1 != (byte) findcol::yp#0 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$3 ← (byte) findcol::y#1 != (byte) findcol::yp#0 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 @@ -4289,31 +4089,31 @@ findcol::@12: scope:[findcol] from findcol::@2 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) - (boolean~) findcol::$11 ← (byte) findcol::y#1 >= (byte) findcol::yp#0 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$9 ← (byte) findcol::y#1 >= (byte) findcol::yp#0 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#1 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#1 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#1 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#1 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#10 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$15 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#10 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@7/(byte) findcol::mindiff#10 ) (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@7/(byte) findcol::mincol#10 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#10 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#1 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#1 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#1 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#1 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -4392,70 +4192,57 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$4 ← (byte~) animate::$2 != (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$4) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + (boolean~) animate::$2 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$2) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - (boolean~) animate::$9 ← (byte~) animate::$7 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$9) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + (boolean~) animate::$5 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$5) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - (boolean~) animate::$14 ← (byte~) animate::$12 != (byte/word/signed word) 255 - if((boolean~) animate::$14) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + (boolean~) animate::$8 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) != (byte/word/signed word) 255 + if((boolean~) animate::$8) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - (boolean~) animate::$19 ← (byte~) animate::$17 != (byte/signed byte/word/signed word) 25 - if((boolean~) animate::$19) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + (boolean~) animate::$11 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) != (byte/signed byte/word/signed word) 25 + if((boolean~) animate::$11) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$24 ← (byte~) animate::$22 != (byte/word/signed word) 255 - if((boolean~) animate::$24) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + (boolean~) animate::$14 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) != (byte/word/signed word) 255 + if((boolean~) animate::$14) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (boolean~) animate::$29 ← (byte~) animate::$27 < (byte/signed byte/word/signed word) 40 - if((boolean~) animate::$29) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + (boolean~) animate::$17 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) < (byte/signed byte/word/signed word) 40 + if((boolean~) animate::$17) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4519,18 +4306,18 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 - (boolean~) findcol::$3 ← (byte) findcol::x#0 != (byte) findcol::xp#0 - if((boolean~) findcol::$3) goto findcol::@2 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) + (boolean~) findcol::$1 ← (byte) findcol::x#0 != (byte) findcol::xp#0 + if((boolean~) findcol::$1) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 - (boolean~) findcol::$7 ← (byte) findcol::x#0 >= (byte) findcol::xp#0 - if((boolean~) findcol::$7) goto findcol::@4 + (boolean~) findcol::$5 ← (byte) findcol::x#0 >= (byte) findcol::xp#0 + if((boolean~) findcol::$5) goto findcol::@4 to:findcol::@12 findcol::@9: scope:[findcol] from findcol::@1 - (boolean~) findcol::$5 ← (byte) findcol::y#0 != (byte) findcol::yp#0 - if((boolean~) findcol::$5) goto findcol::@3 + (boolean~) findcol::$3 ← (byte) findcol::y#0 != (byte) findcol::yp#0 + if((boolean~) findcol::$3) goto findcol::@3 to:findcol::@10 findcol::@3: scope:[findcol] from findcol::@9 to:findcol::@2 @@ -4549,31 +4336,31 @@ findcol::@12: scope:[findcol] from findcol::@2 to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) - (boolean~) findcol::$11 ← (byte) findcol::y#0 >= (byte) findcol::yp#0 - if((boolean~) findcol::$11) goto findcol::@6 + (boolean~) findcol::$9 ← (byte) findcol::y#0 >= (byte) findcol::yp#0 + if((boolean~) findcol::$9) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) - (boolean~) findcol::$17 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#10 - if((boolean~) findcol::$17) goto findcol::@8 + (boolean~) findcol::$15 ← (byte) findcol::diff#6 >= (byte) findcol::mindiff#10 + if((boolean~) findcol::$15) goto findcol::@8 to:findcol::@16 findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@7/(byte) findcol::mindiff#10 ) (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@7/(byte) findcol::mincol#10 ) (byte) findcol::i#1 ← ++ (byte) findcol::i#10 - (boolean~) findcol::$19 ← (byte) findcol::i#1 < (byte) numpoints#15 - if((boolean~) findcol::$19) goto findcol::@1 + (boolean~) findcol::$16 ← (byte) findcol::i#1 < (byte) numpoints#15 + if((boolean~) findcol::$16) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -4582,21 +4369,21 @@ findcol::@17: scope:[findcol] from findcol::@8 to:@end @end: scope:[] from @5 -Simple Condition (boolean~) animate::$4 if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 -Simple Condition (boolean~) animate::$9 if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 -Simple Condition (boolean~) animate::$14 if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 -Simple Condition (boolean~) animate::$19 if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 -Simple Condition (boolean~) animate::$24 if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return -Simple Condition (boolean~) animate::$29 if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return +Simple Condition (boolean~) animate::$2 if(*((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 +Simple Condition (boolean~) animate::$5 if(*((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 +Simple Condition (boolean~) animate::$8 if(*((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 +Simple Condition (boolean~) animate::$11 if(*((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 +Simple Condition (boolean~) animate::$14 if(*((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return +Simple Condition (boolean~) animate::$17 if(*((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return Simple Condition (boolean~) initscreen::$1 if((byte*) initscreen::screen#1<(byte*~) initscreen::$0) goto initscreen::@1 Simple Condition (boolean~) render::$1 if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 Simple Condition (boolean~) render::$3 if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 -Simple Condition (boolean~) findcol::$3 if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 -Simple Condition (boolean~) findcol::$7 if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 -Simple Condition (boolean~) findcol::$5 if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@3 -Simple Condition (boolean~) findcol::$11 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 -Simple Condition (boolean~) findcol::$17 if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@8 -Simple Condition (boolean~) findcol::$19 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 +Simple Condition (boolean~) findcol::$1 if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 +Simple Condition (boolean~) findcol::$5 if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 +Simple Condition (boolean~) findcol::$3 if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@3 +Simple Condition (boolean~) findcol::$9 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 +Simple Condition (boolean~) findcol::$15 if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@8 +Simple Condition (boolean~) findcol::$16 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification CONTROL FLOW GRAPH @begin: scope:[] from @@ -4626,64 +4413,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4744,8 +4518,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 @@ -4774,12 +4548,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -4792,7 +4566,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -4836,64 +4610,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -4949,8 +4710,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(const byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(const byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(const byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 @@ -4978,12 +4739,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -4996,7 +4757,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -5030,64 +4791,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← (const byte[]) YPOS#0 *idx (byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← (const byte[]) XPOS#0 *idx (byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0 + (byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5140,8 +4888,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(const byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(const byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(const byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 @@ -5169,12 +4917,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -5187,7 +4935,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -5196,31 +4944,31 @@ findcol::@17: scope:[findcol] from findcol::@8 to:@end @end: scope:[] from @5 -Consolidated referenced array index constant in assignment animate::$0 -Consolidated assigned array index constant in assignment *(XPOS#0+0) -Consolidated referenced array index constant in assignment animate::$2 -Consolidated referenced array index constant in assignment animate::$5 -Consolidated assigned array index constant in assignment *(YPOS#0+0) -Consolidated referenced array index constant in assignment animate::$7 -Consolidated assigned array index constant in assignment *(XPOS#0+0) -Consolidated referenced array index constant in assignment animate::$10 -Consolidated assigned array index constant in assignment *(XPOS#0+1) -Consolidated referenced array index constant in assignment animate::$12 -Consolidated assigned array index constant in assignment *(YPOS#0+0) -Consolidated referenced array index constant in assignment animate::$15 -Consolidated assigned array index constant in assignment *(YPOS#0+2) -Consolidated referenced array index constant in assignment animate::$17 -Consolidated assigned array index constant in assignment *(XPOS#0+1) -Consolidated referenced array index constant in assignment animate::$20 -Consolidated assigned array index constant in assignment *(YPOS#0+3) -Consolidated referenced array index constant in assignment animate::$22 -Consolidated assigned array index constant in assignment *(YPOS#0+2) -Consolidated assigned array index constant in assignment *(YPOS#0+3) -Consolidated referenced array index constant in assignment animate::$25 -Consolidated assigned array index constant in assignment *(XPOS#0+3) -Consolidated referenced array index constant in assignment animate::$27 -Consolidated referenced array index constant in assignment animate::$30 -Consolidated assigned array index constant in assignment *(XPOS#0+3) +Consolidated array index constant in *(XPOS#0+0) +Consolidated array index constant in *(XPOS#0+0) +Consolidated array index constant in *(XPOS#0+0) +Consolidated array index constant in *(YPOS#0+0) +Consolidated array index constant in *(YPOS#0+0) +Consolidated array index constant in *(YPOS#0+0) +Consolidated array index constant in *(XPOS#0+0) +Consolidated array index constant in *(XPOS#0+1) +Consolidated array index constant in *(XPOS#0+1) +Consolidated array index constant in *(XPOS#0+1) +Consolidated array index constant in *(YPOS#0+0) +Consolidated array index constant in *(YPOS#0+2) +Consolidated array index constant in *(YPOS#0+2) +Consolidated array index constant in *(YPOS#0+2) +Consolidated array index constant in *(XPOS#0+1) +Consolidated array index constant in *(YPOS#0+3) +Consolidated array index constant in *(YPOS#0+3) +Consolidated array index constant in *(YPOS#0+3) +Consolidated array index constant in *(YPOS#0+2) +Consolidated array index constant in *(YPOS#0+3) +Consolidated array index constant in *(XPOS#0+3) +Consolidated array index constant in *(XPOS#0+3) +Consolidated array index constant in *(XPOS#0+3) +Consolidated array index constant in *(XPOS#0+3) +Consolidated array index constant in *(XPOS#0+3) Succesful SSA optimization Pass2ConstantAdditionElimination CONTROL FLOW GRAPH @begin: scope:[] from @@ -5243,64 +4991,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5353,8 +5088,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(const byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(const byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(const byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@3 @@ -5382,12 +5117,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -5400,7 +5135,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 to:findcol::@17 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 findcol::@17: scope:[findcol] from findcol::@8 to:findcol::@return @@ -5433,64 +5168,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5543,8 +5265,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(const byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(const byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(const byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -5568,12 +5290,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -5586,7 +5308,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 to:findcol::@return findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 @5: scope:[] from @begin call main param-assignment @@ -5621,64 +5343,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5731,8 +5440,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(const byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(const byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(const byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (byte[]) XPOS#22 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (byte[]) YPOS#19 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((byte[]) XPOS#22 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((byte[]) YPOS#19 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -5756,12 +5465,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -5774,7 +5483,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(byte) numpoints#15) goto findcol::@1 to:findcol::@return findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (byte[]) COLS#15 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((byte[]) COLS#15 + (byte) findcol::i#10) to:findcol::@8 @5: scope:[] from @begin call main param-assignment @@ -5805,64 +5514,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -5911,8 +5607,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(const byte) findcol::mincol#0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(const byte) findcol::mindiff#0 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(const byte) findcol::i#0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -5936,12 +5632,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -5954,23 +5650,17 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@1 to:findcol::@return findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) to:findcol::@8 @5: scope:[] from @begin call main param-assignment to:@end @end: scope:[] from @5 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#10 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#10 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#10 Not aliassing across scopes: findcol::x#0 render::x#2 Not aliassing across scopes: findcol::y#0 render::y#4 Not aliassing across scopes: findcol::return#0 findcol::return#2 Not aliassing across scopes: render::col#0 findcol::return#0 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#10 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#10 -Multiple usages for variable. Not optimizing sub-constant (byte) findcol::i#10 Inlining constant with var siblings (const byte*) initscreen::screen#0 Inlining constant with var siblings (const byte*) initscreen::screen#0 Inlining constant with var siblings (const byte) render::y#0 @@ -6017,64 +5707,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -6123,8 +5800,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@8 (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@8/(byte) findcol::mindiff#11 ) (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::i#1 ) - (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 @@ -6148,12 +5825,12 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 to:findcol::@7 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) @@ -6166,7 +5843,7 @@ findcol::@8: scope:[findcol] from findcol::@16 findcol::@7 if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@1 to:findcol::@return findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) to:findcol::@8 @5: scope:[] from @begin call main param-assignment @@ -6191,25 +5868,12 @@ FINAL SYMBOL TABLE (const byte[]) YPOS#0 = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } (void()) animate() (byte~) animate::$0 -(byte~) animate::$1 -(byte~) animate::$10 -(byte~) animate::$11 (byte~) animate::$12 (byte~) animate::$15 -(byte~) animate::$16 -(byte~) animate::$17 -(byte~) animate::$2 -(byte~) animate::$20 -(byte~) animate::$21 -(byte~) animate::$22 -(byte~) animate::$25 -(byte~) animate::$26 -(byte~) animate::$27 -(byte~) animate::$30 -(byte~) animate::$31 -(byte~) animate::$5 +(byte~) animate::$18 +(byte~) animate::$3 (byte~) animate::$6 -(byte~) animate::$7 +(byte~) animate::$9 (label) animate::@1 (label) animate::@10 (label) animate::@11 @@ -6222,8 +5886,8 @@ FINAL SYMBOL TABLE (label) animate::@9 (label) animate::@return (byte()) findcol((byte) findcol::x , (byte) findcol::y) +(byte~) findcol::$10 (byte~) findcol::$12 -(byte~) findcol::$14 (label) findcol::@1 (label) findcol::@12 (label) findcol::@14 @@ -6326,64 +5990,51 @@ main::@return: scope:[main] from main::@5 return to:@return animate: scope:[animate] from main::@4 - (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 - (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 + (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 to:animate::@7 animate::@7: scope:[animate] from animate *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 - (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 - if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 + (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 to:animate::@8 animate::@8: scope:[animate] from animate::@1 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 - (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 - if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 + (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 to:animate::@9 animate::@9: scope:[animate] from animate::@2 *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 - (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 - if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 + (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 to:animate::@10 animate::@10: scope:[animate] from animate::@3 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 - *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 - (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return + (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 + *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 + if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return to:animate::@11 animate::@11: scope:[animate] from animate::@4 *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 - (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 - (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return + (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 + if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return to:animate::@12 animate::@12: scope:[animate] from animate::@11 - (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 - (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 - *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 + (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 + *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 return @@ -6428,8 +6079,8 @@ findcol::@1: scope:[findcol] from findcol findcol::@19 (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::mincol#14 ) (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::i#14 ) - (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 - (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 + (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) + (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 to:findcol::@9 findcol::@9: scope:[findcol] from findcol::@1 @@ -6451,8 +6102,8 @@ findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 to:findcol::@14 findcol::@14: scope:[findcol] from findcol::@5 - (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 - (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 + (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 + (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 (byte~) findcol::diff#11 ← (byte) findcol::diff#3 to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 @@ -6460,7 +6111,7 @@ findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 to:findcol::@16 findcol::@16: scope:[findcol] from findcol::@7 - (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 + (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 (byte~) findcol::mindiff#14 ← (byte) findcol::diff#6 to:findcol::@8 @@ -6483,8 +6134,8 @@ findcol::@21: scope:[findcol] from findcol::@7 (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 to:findcol::@8 findcol::@6: scope:[findcol] from findcol::@5 - (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 - (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 + (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 + (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 (byte~) findcol::diff#12 ← (byte) findcol::diff#2 to:findcol::@7 findcol::@4: scope:[findcol] from findcol::@2 @@ -6518,7 +6169,7 @@ Adding NOP phi() at start of initscreen CALL GRAPH Calls in [] to main:2 Calls in [main] to initscreen:5 render:7 animate:9 -Calls in [render] to findcol:56 +Calls in [render] to findcol:43 Propagating live ranges... Propagating live ranges... @@ -6567,206 +6218,193 @@ main::@return: scope:[main] from main::@5 [11] return [ ] to:@return animate: scope:[animate] from main::@4 - [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] - [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] - [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] - [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] - [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] + [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] + [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] + [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] to:animate::@7 animate::@7: scope:[animate] from animate - [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] + [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] - [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] - [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] - [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] - [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] + [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] + [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] + [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] + [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] - [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] - [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] - [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] - [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] + [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] + [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] + [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] - [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] - [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] - [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] - [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] + [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] + [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] + [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] - [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] - [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] - [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] - [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] + [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] + [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] + [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] - [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] - [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] - [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] - [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] - [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] + [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] + [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] + [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] + [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] - [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] - [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] + [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] + [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 - [50] return [ ] + [37] return [ ] to:@return render: scope:[render] from main::@1 - [51] phi() [ ] + [38] phi() [ ] to:render::@1 render::@1: scope:[render] from render render::@6 - [52] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@6/(byte*~) render::colline#6 ) [ render::y#4 render::colline#5 ] - [52] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@6/(byte~) render::y#6 ) [ render::y#4 render::colline#5 ] + [39] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@6/(byte*~) render::colline#6 ) [ render::y#4 render::colline#5 ] + [39] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@6/(byte~) render::y#6 ) [ render::y#4 render::colline#5 ] to:render::@2 render::@2: scope:[render] from render::@1 render::@7 - [53] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@7/(byte~) render::x#4 ) [ render::y#4 render::colline#5 render::x#2 ] - [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] - [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] - [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] - [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] + [40] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@7/(byte~) render::x#4 ) [ render::y#4 render::colline#5 render::x#2 ] + [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] + [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] + [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] + [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] to:render::@5 render::@5: scope:[render] from render::@2 - [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] - [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] - [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] - [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@7 [ render::y#4 render::colline#5 render::x#1 ] + [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] + [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] + [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] + [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@7 [ render::y#4 render::colline#5 render::x#1 ] to:render::@3 render::@3: scope:[render] from render::@5 - [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] - [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::colline#1 render::y#1 ] - [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@6 [ render::colline#1 render::y#1 ] + [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] + [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::colline#1 render::y#1 ] + [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@6 [ render::colline#1 render::y#1 ] to:render::@return render::@return: scope:[render] from render::@3 - [65] return [ ] + [52] return [ ] to:@return render::@6: scope:[render] from render::@3 - [66] (byte~) render::y#6 ← (byte) render::y#1 [ render::y#6 render::colline#1 ] - [67] (byte*~) render::colline#6 ← (byte*) render::colline#1 [ render::y#6 render::colline#6 ] + [53] (byte~) render::y#6 ← (byte) render::y#1 [ render::y#6 render::colline#1 ] + [54] (byte*~) render::colline#6 ← (byte*) render::colline#1 [ render::y#6 render::colline#6 ] to:render::@1 render::@7: scope:[render] from render::@5 - [68] (byte~) render::x#4 ← (byte) render::x#1 [ render::y#4 render::colline#5 render::x#4 ] + [55] (byte~) render::x#4 ← (byte) render::x#1 [ render::y#4 render::colline#5 render::x#4 ] to:render::@2 findcol: scope:[findcol] from render::@2 - [69] phi() [ findcol::x#0 findcol::y#0 ] + [56] phi() [ findcol::x#0 findcol::y#0 ] to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [70] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::mincol#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [70] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [70] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::i#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [71] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] - [72] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] - [73] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [57] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::mincol#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [57] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [57] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte~) findcol::i#14 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [58] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] + [59] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [60] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] to:findcol::@9 findcol::@9: scope:[findcol] from findcol::@1 - [74] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [61] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] to:findcol::@return findcol::@return: scope:[findcol] from findcol::@20 findcol::@9 - [75] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::return#6 ) [ findcol::return#2 ] - [76] return [ findcol::return#2 ] + [62] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@20/(byte~) findcol::return#6 ) [ findcol::return#2 ] + [63] return [ findcol::return#2 ] to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 - [77] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [64] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] to:findcol::@12 findcol::@12: scope:[findcol] from findcol::@2 - [78] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] - [79] (byte~) findcol::diff#9 ← (byte) findcol::diff#1 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#9 ] + [65] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] + [66] (byte~) findcol::diff#9 ← (byte) findcol::diff#1 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#9 ] to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - [80] (byte) findcol::diff#4 ← phi( findcol::@12/(byte~) findcol::diff#9 findcol::@4/(byte~) findcol::diff#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] - [81] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] + [67] (byte) findcol::diff#4 ← phi( findcol::@12/(byte~) findcol::diff#9 findcol::@4/(byte~) findcol::diff#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] + [68] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] to:findcol::@14 findcol::@14: scope:[findcol] from findcol::@5 - [82] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] - [83] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] - [84] (byte~) findcol::diff#11 ← (byte) findcol::diff#3 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#11 ] + [69] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] + [70] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] + [71] (byte~) findcol::diff#11 ← (byte) findcol::diff#3 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#11 ] to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - [85] (byte) findcol::diff#6 ← phi( findcol::@14/(byte~) findcol::diff#11 findcol::@6/(byte~) findcol::diff#12 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] - [86] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] + [72] (byte) findcol::diff#6 ← phi( findcol::@14/(byte~) findcol::diff#11 findcol::@6/(byte~) findcol::diff#12 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] + [73] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] to:findcol::@16 findcol::@16: scope:[findcol] from findcol::@7 - [87] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] - [88] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#15 ] - [89] (byte~) findcol::mindiff#14 ← (byte) findcol::diff#6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#15 findcol::mindiff#14 ] + [74] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] + [75] (byte~) findcol::mincol#15 ← (byte) findcol::mincol#1 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#15 ] + [76] (byte~) findcol::mindiff#14 ← (byte) findcol::diff#6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#15 findcol::mindiff#14 ] to:findcol::@8 findcol::@8: scope:[findcol] from findcol::@16 findcol::@21 - [90] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte~) findcol::mindiff#14 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] - [90] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte~) findcol::mincol#15 findcol::@21/(byte~) findcol::mincol#16 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] - [91] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 findcol::i#1 ] - [92] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 findcol::i#1 ] + [77] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte~) findcol::mindiff#14 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] + [77] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte~) findcol::mincol#15 findcol::@21/(byte~) findcol::mincol#16 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] + [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 findcol::i#1 ] + [79] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::mincol#2 findcol::mindiff#11 findcol::i#1 ] to:findcol::@20 findcol::@20: scope:[findcol] from findcol::@8 - [93] (byte~) findcol::return#6 ← (byte) findcol::mincol#2 [ findcol::return#6 ] + [80] (byte~) findcol::return#6 ← (byte) findcol::mincol#2 [ findcol::return#6 ] to:findcol::@return findcol::@19: scope:[findcol] from findcol::@8 - [94] (byte~) findcol::i#14 ← (byte) findcol::i#1 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mincol#2 findcol::mindiff#11 ] - [95] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mindiff#13 findcol::mincol#2 ] - [96] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#2 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mindiff#13 findcol::mincol#14 ] + [81] (byte~) findcol::i#14 ← (byte) findcol::i#1 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mincol#2 findcol::mindiff#11 ] + [82] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mindiff#13 findcol::mincol#2 ] + [83] (byte~) findcol::mincol#14 ← (byte) findcol::mincol#2 [ findcol::x#0 findcol::y#0 findcol::i#14 findcol::mindiff#13 findcol::mincol#14 ] to:findcol::@1 findcol::@21: scope:[findcol] from findcol::@7 - [97] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#16 ] - [98] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#16 findcol::mindiff#15 ] + [84] (byte~) findcol::mincol#16 ← (byte) findcol::mincol#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#16 ] + [85] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#16 findcol::mindiff#15 ] to:findcol::@8 findcol::@6: scope:[findcol] from findcol::@5 - [99] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] - [100] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] - [101] (byte~) findcol::diff#12 ← (byte) findcol::diff#2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#12 ] + [86] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] + [87] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] + [88] (byte~) findcol::diff#12 ← (byte) findcol::diff#2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#12 ] to:findcol::@7 findcol::@4: scope:[findcol] from findcol::@2 - [102] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] - [103] (byte~) findcol::diff#10 ← (byte) findcol::diff#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#10 ] + [89] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] + [90] (byte~) findcol::diff#10 ← (byte) findcol::diff#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#10 ] to:findcol::@5 initscreen: scope:[initscreen] from main - [104] phi() [ ] + [91] phi() [ ] to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@3 - [105] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@3/(byte*~) initscreen::screen#3 ) [ initscreen::screen#2 ] - [106] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] - [107] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] - [108] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@3 [ initscreen::screen#1 ] + [92] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@3/(byte*~) initscreen::screen#3 ) [ initscreen::screen#2 ] + [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] + [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] + [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@3 [ initscreen::screen#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 - [109] return [ ] + [96] return [ ] to:@return initscreen::@3: scope:[initscreen] from initscreen::@1 - [110] (byte*~) initscreen::screen#3 ← (byte*) initscreen::screen#1 [ initscreen::screen#3 ] + [97] (byte*~) initscreen::screen#3 ← (byte*) initscreen::screen#1 [ initscreen::screen#3 ] to:initscreen::@1 Created 12 initial phi equivalence classes -Coalesced [66] render::y#6 ← render::y#1 -Coalesced [67] render::colline#6 ← render::colline#1 -Coalesced [68] render::x#4 ← render::x#1 -Coalesced [79] findcol::diff#9 ← findcol::diff#1 -Coalesced [84] findcol::diff#11 ← findcol::diff#3 -Coalesced [88] findcol::mincol#15 ← findcol::mincol#1 -Coalesced [89] findcol::mindiff#14 ← findcol::diff#6 -Coalesced [93] findcol::return#6 ← findcol::mincol#2 -Coalesced [94] findcol::i#14 ← findcol::i#1 -Not coalescing [95] findcol::mindiff#13 ← findcol::mindiff#11 -Coalesced [96] findcol::mincol#14 ← findcol::mincol#2 -Coalesced (already) [97] findcol::mincol#16 ← findcol::mincol#10 -Not coalescing [98] findcol::mindiff#15 ← findcol::mindiff#10 -Coalesced [101] findcol::diff#12 ← findcol::diff#2 -Coalesced [103] findcol::diff#10 ← findcol::diff#0 -Coalesced [110] initscreen::screen#3 ← initscreen::screen#1 +Coalesced [53] render::y#6 ← render::y#1 +Coalesced [54] render::colline#6 ← render::colline#1 +Coalesced [55] render::x#4 ← render::x#1 +Coalesced [66] findcol::diff#9 ← findcol::diff#1 +Coalesced [71] findcol::diff#11 ← findcol::diff#3 +Coalesced [75] findcol::mincol#15 ← findcol::mincol#1 +Coalesced [76] findcol::mindiff#14 ← findcol::diff#6 +Coalesced [80] findcol::return#6 ← findcol::mincol#2 +Coalesced [81] findcol::i#14 ← findcol::i#1 +Not coalescing [82] findcol::mindiff#13 ← findcol::mindiff#11 +Coalesced [83] findcol::mincol#14 ← findcol::mincol#2 +Coalesced (already) [84] findcol::mincol#16 ← findcol::mincol#10 +Not coalescing [85] findcol::mindiff#15 ← findcol::mindiff#10 +Coalesced [88] findcol::diff#12 ← findcol::diff#2 +Coalesced [90] findcol::diff#10 ← findcol::diff#0 +Coalesced [97] initscreen::screen#3 ← initscreen::screen#1 Coalesced down to 9 phi equivalence classes Culled Empty Block (label) render::@6 Culled Empty Block (label) render::@7 @@ -6824,165 +6462,152 @@ main::@return: scope:[main] from main::@5 [11] return [ ] to:@return animate: scope:[animate] from main::@4 - [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] - [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] - [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] - [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] - [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] + [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] + [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] + [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] to:animate::@7 animate::@7: scope:[animate] from animate - [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] + [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] - [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] - [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] - [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] - [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] + [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] + [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] + [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] + [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] - [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] - [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] - [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] - [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] + [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] + [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] + [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] - [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] - [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] - [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] - [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] + [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] + [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] + [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] - [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] - [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] - [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] - [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] + [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] + [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] + [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] - [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] - [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] - [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] - [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] - [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] + [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] + [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] + [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] + [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] - [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] - [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] + [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] + [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 - [50] return [ ] + [37] return [ ] to:@return render: scope:[render] from main::@1 - [51] phi() [ ] + [38] phi() [ ] to:render::@1 render::@1: scope:[render] from render render::@3 - [52] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] - [52] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] + [39] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] + [39] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - [53] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] - [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] - [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] - [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] - [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] + [40] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] + [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] + [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] + [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] + [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] to:render::@5 render::@5: scope:[render] from render::@2 - [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] - [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] - [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] - [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] + [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] + [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] + [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] + [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] to:render::@3 render::@3: scope:[render] from render::@5 - [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] - [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] - [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] + [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] + [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] + [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] to:render::@return render::@return: scope:[render] from render::@3 - [65] return [ ] + [52] return [ ] to:@return findcol: scope:[findcol] from render::@2 - [66] phi() [ findcol::x#0 findcol::y#0 ] + [53] phi() [ findcol::x#0 findcol::y#0 ] to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [67] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [67] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [67] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] - [68] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] - [69] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] - [70] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [54] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [54] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [54] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] + [55] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] + [56] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [57] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] to:findcol::@9 findcol::@9: scope:[findcol] from findcol::@1 - [71] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [58] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] to:findcol::@return findcol::@return: scope:[findcol] from findcol::@8 findcol::@9 - [72] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#2 ] - [73] return [ findcol::return#2 ] + [59] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#2 ] + [60] return [ findcol::return#2 ] to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 - [74] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] + [61] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] to:findcol::@12 findcol::@12: scope:[findcol] from findcol::@2 - [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] + [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - [76] (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] - [77] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] + [63] (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] + [64] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] to:findcol::@14 findcol::@14: scope:[findcol] from findcol::@5 - [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] - [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] + [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] + [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - [80] (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] - [81] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] + [67] (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] + [68] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] to:findcol::@16 findcol::@16: scope:[findcol] from findcol::@7 - [82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] + [69] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] to:findcol::@8 findcol::@8: scope:[findcol] from findcol::@16 findcol::@21 - [83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] - [83] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] - [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] - [85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] + [70] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] + [70] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] + [71] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] + [72] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] to:findcol::@return findcol::@19: scope:[findcol] from findcol::@8 - [86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] + [73] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] to:findcol::@1 findcol::@21: scope:[findcol] from findcol::@7 - [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] + [74] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] to:findcol::@8 findcol::@6: scope:[findcol] from findcol::@5 - [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] - [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] + [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] + [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] to:findcol::@7 findcol::@4: scope:[findcol] from findcol::@2 - [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] + [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] to:findcol::@5 initscreen: scope:[initscreen] from main - [91] phi() [ ] + [78] phi() [ ] to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 - [92] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] - [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] - [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] - [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] + [79] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] + [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] + [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] + [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 - [96] return [ ] + [83] return [ ] to:@return CONTROL FLOW GRAPH - PHI MEM COALESCED @@ -7014,165 +6639,152 @@ main::@return: scope:[main] from main::@5 [11] return [ ] ( main:2 [ ] ) to:@return animate: scope:[animate] from main::@4 - [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) - [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:2::animate:9 [ animate::$1 ] ) - [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:2::animate:9 [ ] ) - [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:2::animate:9 [ animate::$2 ] ) - [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) + [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) + [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] ( main:2::animate:9 [ ] ) + [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) to:animate::@7 animate::@7: scope:[animate] from animate - [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) + [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) to:animate::@1 animate::@1: scope:[animate] from animate animate::@7 - [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:2::animate:9 [ animate::$5 ] ) - [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) - [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) - [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:2::animate:9 [ animate::$7 ] ) - [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) + [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) + [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] ( main:2::animate:9 [ ] ) + [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) to:animate::@8 animate::@8: scope:[animate] from animate::@1 - [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) + [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) to:animate::@2 animate::@2: scope:[animate] from animate::@1 animate::@8 - [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:2::animate:9 [ animate::$10 ] ) - [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:2::animate:9 [ animate::$11 ] ) - [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:2::animate:9 [ ] ) - [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) - [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) + [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) + [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) + [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) to:animate::@9 animate::@9: scope:[animate] from animate::@2 - [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) + [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) to:animate::@3 animate::@3: scope:[animate] from animate::@2 animate::@9 - [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) - [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:2::animate:9 [ animate::$16 ] ) - [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:2::animate:9 [ ] ) - [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:2::animate:9 [ animate::$17 ] ) - [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) + [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) + [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] ( main:2::animate:9 [ ] ) + [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) to:animate::@10 animate::@10: scope:[animate] from animate::@3 - [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) + [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) to:animate::@4 animate::@4: scope:[animate] from animate::@10 animate::@3 - [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:2::animate:9 [ animate::$20 ] ) - [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:2::animate:9 [ animate::$21 ] ) - [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:2::animate:9 [ ] ) - [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:2::animate:9 [ animate::$22 ] ) - [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) + [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) + [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] ( main:2::animate:9 [ ] ) + [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) to:animate::@11 animate::@11: scope:[animate] from animate::@4 - [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) - [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:2::animate:9 [ animate::$25 ] ) - [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) - [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:2::animate:9 [ ] ) - [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:2::animate:9 [ animate::$27 ] ) - [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) + [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) + [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) + [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] ( main:2::animate:9 [ ] ) + [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) to:animate::@12 animate::@12: scope:[animate] from animate::@11 - [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:2::animate:9 [ animate::$30 ] ) - [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) - [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:2::animate:9 [ ] ) + [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) + [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] ( main:2::animate:9 [ ] ) to:animate::@return animate::@return: scope:[animate] from animate::@11 animate::@12 animate::@4 - [50] return [ ] ( main:2::animate:9 [ ] ) + [37] return [ ] ( main:2::animate:9 [ ] ) to:@return render: scope:[render] from main::@1 - [51] phi() [ ] ( main:2::render:7 [ ] ) + [38] phi() [ ] ( main:2::render:7 [ ] ) to:render::@1 render::@1: scope:[render] from render render::@3 - [52] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) - [52] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) + [39] (byte*) render::colline#5 ← phi( render/(const byte*) COLORS#0 render::@3/(byte*) render::colline#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) + [39] (byte) render::y#4 ← phi( render/(byte/signed byte/word/signed word) 0 render::@3/(byte) render::y#1 ) [ render::y#4 render::colline#5 ] ( main:2::render:7 [ render::y#4 render::colline#5 ] ) to:render::@2 render::@2: scope:[render] from render::@1 render::@5 - [53] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) - [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) - [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) - [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) + [40] (byte) render::x#2 ← phi( render::@1/(byte/signed byte/word/signed word) 0 render::@5/(byte) render::x#1 ) [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) + [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) + [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) + [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) to:render::@5 render::@5: scope:[render] from render::@2 - [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) - [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) - [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) - [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) + [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) + [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) + [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) + [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) to:render::@3 render::@3: scope:[render] from render::@5 - [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) - [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) - [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) + [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) + [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) + [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) to:render::@return render::@return: scope:[render] from render::@3 - [65] return [ ] ( main:2::render:7 [ ] ) + [52] return [ ] ( main:2::render:7 [ ] ) to:@return findcol: scope:[findcol] from render::@2 - [66] phi() [ findcol::x#0 findcol::y#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) + [53] phi() [ findcol::x#0 findcol::y#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) to:findcol::@1 findcol::@1: scope:[findcol] from findcol findcol::@19 - [67] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [67] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [67] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) - [68] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) - [69] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) - [70] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [54] (byte) findcol::mincol#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::mincol#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [54] (byte) findcol::mindiff#10 ← phi( findcol/(byte/word/signed word) 255 findcol::@19/(byte~) findcol::mindiff#13 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [54] (byte) findcol::i#10 ← phi( findcol/(byte/signed byte/word/signed word) 0 findcol::@19/(byte) findcol::i#1 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 ] ) + [55] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) + [56] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [57] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) to:findcol::@9 findcol::@9: scope:[findcol] from findcol::@1 - [71] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [58] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) to:findcol::@return findcol::@return: scope:[findcol] from findcol::@8 findcol::@9 - [72] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - [73] return [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + [59] (byte) findcol::return#2 ← phi( findcol::@9/(byte/signed byte/word/signed word) 0 findcol::@8/(byte) findcol::mincol#2 ) [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + [60] return [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) to:@return findcol::@2: scope:[findcol] from findcol::@1 findcol::@9 - [74] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) + [61] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) to:findcol::@12 findcol::@12: scope:[findcol] from findcol::@2 - [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) + [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) to:findcol::@5 findcol::@5: scope:[findcol] from findcol::@12 findcol::@4 - [76] (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) - [77] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) + [63] (byte) findcol::diff#4 ← phi( findcol::@12/(byte) findcol::diff#1 findcol::@4/(byte) findcol::diff#0 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) + [64] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) to:findcol::@14 findcol::@14: scope:[findcol] from findcol::@5 - [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) - [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) + [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) + [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) to:findcol::@7 findcol::@7: scope:[findcol] from findcol::@14 findcol::@6 - [80] (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) - [81] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) + [67] (byte) findcol::diff#6 ← phi( findcol::@14/(byte) findcol::diff#3 findcol::@6/(byte) findcol::diff#2 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) + [68] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) to:findcol::@16 findcol::@16: scope:[findcol] from findcol::@7 - [82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) + [69] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) to:findcol::@8 findcol::@8: scope:[findcol] from findcol::@16 findcol::@21 - [83] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) - [83] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) - [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) - [85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) + [70] (byte) findcol::mindiff#11 ← phi( findcol::@16/(byte) findcol::diff#6 findcol::@21/(byte~) findcol::mindiff#15 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) + [70] (byte) findcol::mincol#2 ← phi( findcol::@16/(byte) findcol::mincol#1 findcol::@21/(byte) findcol::mincol#10 ) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#2 findcol::mindiff#11 ] ) + [71] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) + [72] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) to:findcol::@return findcol::@19: scope:[findcol] from findcol::@8 - [86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) + [73] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) to:findcol::@1 findcol::@21: scope:[findcol] from findcol::@7 - [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) + [74] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) to:findcol::@8 findcol::@6: scope:[findcol] from findcol::@5 - [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) - [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) + [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) + [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) to:findcol::@7 findcol::@4: scope:[findcol] from findcol::@2 - [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) + [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) to:findcol::@5 initscreen: scope:[initscreen] from main - [91] phi() [ ] ( main:2::initscreen:5 [ ] ) + [78] phi() [ ] ( main:2::initscreen:5 [ ] ) to:initscreen::@1 initscreen::@1: scope:[initscreen] from initscreen initscreen::@1 - [92] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) - [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) - [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) - [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) + [79] (byte*) initscreen::screen#2 ← phi( initscreen/(const byte*) SCREEN#0 initscreen::@1/(byte*) initscreen::screen#1 ) [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) + [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) + [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) + [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) to:initscreen::@return initscreen::@return: scope:[initscreen] from initscreen::@1 - [96] return [ ] ( main:2::initscreen:5 [ ] ) + [83] return [ ] ( main:2::initscreen:5 [ ] ) to:@return DOMINATORS @@ -7266,28 +6878,15 @@ VARIABLE REGISTER WEIGHTS (byte[]) YPOS (void()) animate() (byte~) animate::$0 4.0 -(byte~) animate::$1 4.0 -(byte~) animate::$10 4.0 -(byte~) animate::$11 4.0 (byte~) animate::$12 4.0 (byte~) animate::$15 4.0 -(byte~) animate::$16 4.0 -(byte~) animate::$17 4.0 -(byte~) animate::$2 4.0 -(byte~) animate::$20 4.0 -(byte~) animate::$21 4.0 -(byte~) animate::$22 4.0 -(byte~) animate::$25 4.0 -(byte~) animate::$26 4.0 -(byte~) animate::$27 4.0 -(byte~) animate::$30 4.0 -(byte~) animate::$31 4.0 -(byte~) animate::$5 4.0 +(byte~) animate::$18 4.0 +(byte~) animate::$3 4.0 (byte~) animate::$6 4.0 -(byte~) animate::$7 4.0 +(byte~) animate::$9 4.0 (byte()) findcol((byte) findcol::x , (byte) findcol::y) +(byte~) findcol::$10 20002.0 (byte~) findcol::$12 20002.0 -(byte~) findcol::$14 20002.0 (byte) findcol::diff (byte) findcol::diff#0 20002.0 (byte) findcol::diff#1 20002.0 @@ -7348,33 +6947,20 @@ Initial phi equivalence classes [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] [ initscreen::screen#2 initscreen::screen#1 ] Added variable animate::$0 to zero page equivalence class [ animate::$0 ] -Added variable animate::$1 to zero page equivalence class [ animate::$1 ] -Added variable animate::$2 to zero page equivalence class [ animate::$2 ] -Added variable animate::$5 to zero page equivalence class [ animate::$5 ] +Added variable animate::$3 to zero page equivalence class [ animate::$3 ] Added variable animate::$6 to zero page equivalence class [ animate::$6 ] -Added variable animate::$7 to zero page equivalence class [ animate::$7 ] -Added variable animate::$10 to zero page equivalence class [ animate::$10 ] -Added variable animate::$11 to zero page equivalence class [ animate::$11 ] +Added variable animate::$9 to zero page equivalence class [ animate::$9 ] Added variable animate::$12 to zero page equivalence class [ animate::$12 ] Added variable animate::$15 to zero page equivalence class [ animate::$15 ] -Added variable animate::$16 to zero page equivalence class [ animate::$16 ] -Added variable animate::$17 to zero page equivalence class [ animate::$17 ] -Added variable animate::$20 to zero page equivalence class [ animate::$20 ] -Added variable animate::$21 to zero page equivalence class [ animate::$21 ] -Added variable animate::$22 to zero page equivalence class [ animate::$22 ] -Added variable animate::$25 to zero page equivalence class [ animate::$25 ] -Added variable animate::$26 to zero page equivalence class [ animate::$26 ] -Added variable animate::$27 to zero page equivalence class [ animate::$27 ] -Added variable animate::$30 to zero page equivalence class [ animate::$30 ] -Added variable animate::$31 to zero page equivalence class [ animate::$31 ] +Added variable animate::$18 to zero page equivalence class [ animate::$18 ] Added variable findcol::x#0 to zero page equivalence class [ findcol::x#0 ] Added variable findcol::y#0 to zero page equivalence class [ findcol::y#0 ] Added variable findcol::return#0 to zero page equivalence class [ findcol::return#0 ] Added variable render::col#0 to zero page equivalence class [ render::col#0 ] Added variable findcol::xp#0 to zero page equivalence class [ findcol::xp#0 ] Added variable findcol::yp#0 to zero page equivalence class [ findcol::yp#0 ] +Added variable findcol::$10 to zero page equivalence class [ findcol::$10 ] Added variable findcol::$12 to zero page equivalence class [ findcol::$12 ] -Added variable findcol::$14 to zero page equivalence class [ findcol::$14 ] Complete equivalence classes [ render::y#4 render::y#1 ] [ render::colline#5 render::colline#1 ] @@ -7386,33 +6972,20 @@ Complete equivalence classes [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] [ initscreen::screen#2 initscreen::screen#1 ] [ animate::$0 ] -[ animate::$1 ] -[ animate::$2 ] -[ animate::$5 ] +[ animate::$3 ] [ animate::$6 ] -[ animate::$7 ] -[ animate::$10 ] -[ animate::$11 ] +[ animate::$9 ] [ animate::$12 ] [ animate::$15 ] -[ animate::$16 ] -[ animate::$17 ] -[ animate::$20 ] -[ animate::$21 ] -[ animate::$22 ] -[ animate::$25 ] -[ animate::$26 ] -[ animate::$27 ] -[ animate::$30 ] -[ animate::$31 ] +[ animate::$18 ] [ findcol::x#0 ] [ findcol::y#0 ] [ findcol::return#0 ] [ render::col#0 ] [ findcol::xp#0 ] [ findcol::yp#0 ] +[ findcol::$10 ] [ findcol::$12 ] -[ findcol::$14 ] Allocated zp ZP_BYTE:2 [ render::y#4 render::y#1 ] Allocated zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] Allocated zp ZP_BYTE:5 [ render::x#2 render::x#1 ] @@ -7423,33 +6996,20 @@ Allocated zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] Allocated zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] Allocated zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] Allocated zp ZP_BYTE:13 [ animate::$0 ] -Allocated zp ZP_BYTE:14 [ animate::$1 ] -Allocated zp ZP_BYTE:15 [ animate::$2 ] -Allocated zp ZP_BYTE:16 [ animate::$5 ] -Allocated zp ZP_BYTE:17 [ animate::$6 ] -Allocated zp ZP_BYTE:18 [ animate::$7 ] -Allocated zp ZP_BYTE:19 [ animate::$10 ] -Allocated zp ZP_BYTE:20 [ animate::$11 ] -Allocated zp ZP_BYTE:21 [ animate::$12 ] -Allocated zp ZP_BYTE:22 [ animate::$15 ] -Allocated zp ZP_BYTE:23 [ animate::$16 ] -Allocated zp ZP_BYTE:24 [ animate::$17 ] -Allocated zp ZP_BYTE:25 [ animate::$20 ] -Allocated zp ZP_BYTE:26 [ animate::$21 ] -Allocated zp ZP_BYTE:27 [ animate::$22 ] -Allocated zp ZP_BYTE:28 [ animate::$25 ] -Allocated zp ZP_BYTE:29 [ animate::$26 ] -Allocated zp ZP_BYTE:30 [ animate::$27 ] -Allocated zp ZP_BYTE:31 [ animate::$30 ] -Allocated zp ZP_BYTE:32 [ animate::$31 ] -Allocated zp ZP_BYTE:33 [ findcol::x#0 ] -Allocated zp ZP_BYTE:34 [ findcol::y#0 ] -Allocated zp ZP_BYTE:35 [ findcol::return#0 ] -Allocated zp ZP_BYTE:36 [ render::col#0 ] -Allocated zp ZP_BYTE:37 [ findcol::xp#0 ] -Allocated zp ZP_BYTE:38 [ findcol::yp#0 ] -Allocated zp ZP_BYTE:39 [ findcol::$12 ] -Allocated zp ZP_BYTE:40 [ findcol::$14 ] +Allocated zp ZP_BYTE:14 [ animate::$3 ] +Allocated zp ZP_BYTE:15 [ animate::$6 ] +Allocated zp ZP_BYTE:16 [ animate::$9 ] +Allocated zp ZP_BYTE:17 [ animate::$12 ] +Allocated zp ZP_BYTE:18 [ animate::$15 ] +Allocated zp ZP_BYTE:19 [ animate::$18 ] +Allocated zp ZP_BYTE:20 [ findcol::x#0 ] +Allocated zp ZP_BYTE:21 [ findcol::y#0 ] +Allocated zp ZP_BYTE:22 [ findcol::return#0 ] +Allocated zp ZP_BYTE:23 [ render::col#0 ] +Allocated zp ZP_BYTE:24 [ findcol::xp#0 ] +Allocated zp ZP_BYTE:25 [ findcol::yp#0 ] +Allocated zp ZP_BYTE:26 [ findcol::$10 ] +Allocated zp ZP_BYTE:27 [ findcol::$12 ] INITIAL ASM //SEG0 Basic Upstart .pc = $801 "Basic" @@ -7482,7 +7042,7 @@ bend: //SEG9 main main: { //SEG10 [5] call initscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [91] phi from main to initscreen [phi:main->initscreen] + //SEG11 [78] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG12 [6] phi from main main::@5 to main::@1 [phi:main/main::@5->main::@1] @@ -7492,7 +7052,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call render param-assignment [ ] ( main:2 [ ] ) - //SEG15 [51] phi from main::@1 to render [phi:main::@1->render] + //SEG15 [38] phi from main::@1 to render [phi:main::@1->render] render_from_b1: jsr render //SEG16 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] @@ -7516,264 +7076,212 @@ main: { //SEG23 animate animate: { .label _0 = $d - .label _1 = $e - .label _2 = $f - .label _5 = $10 - .label _6 = $11 - .label _7 = $12 - .label _10 = $13 - .label _11 = $14 - .label _12 = $15 - .label _15 = $16 - .label _16 = $17 - .label _17 = $18 - .label _20 = $19 - .label _21 = $1a - .label _22 = $1b - .label _25 = $1c - .label _26 = $1d - .label _27 = $1e - .label _30 = $1f - .label _31 = $20 - //SEG24 [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuz1=_deref_pbuc1 + .label _3 = $e + .label _6 = $f + .label _9 = $10 + .label _12 = $11 + .label _15 = $12 + .label _18 = $13 + //SEG24 [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuz1=_deref_pbuc1_plus_1 lda XPOS+0 - sta _0 - //SEG25 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:2::animate:9 [ animate::$1 ] ) -- vbuz1=vbuz2_plus_1 - lda _0 clc adc #1 - sta _1 - //SEG26 [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _1 + sta _0 + //SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _0 sta XPOS+0 - //SEG27 [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:2::animate:9 [ animate::$2 ] ) -- vbuz1=_deref_pbuc1 + //SEG26 [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS+0 - sta _2 - //SEG28 [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- vbuz1_neq_vbuc1_then_la1 - lda _2 cmp #$28 bne b1 jmp b7 - //SEG29 animate::@7 + //SEG27 animate::@7 b7: - //SEG30 [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG28 [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta XPOS+0 jmp b1 - //SEG31 animate::@1 + //SEG29 animate::@1 b1: - //SEG32 [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:2::animate:9 [ animate::$5 ] ) -- vbuz1=_deref_pbuc1 + //SEG30 [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuz1=_deref_pbuc1_plus_1 lda YPOS+0 - sta _5 - //SEG33 [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuz1=vbuz2_plus_1 - lda _5 clc adc #1 - sta _6 - //SEG34 [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _6 + sta _3 + //SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _3 sta YPOS+0 - //SEG35 [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:2::animate:9 [ animate::$7 ] ) -- vbuz1=_deref_pbuc1 + //SEG32 [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+0 - sta _7 - //SEG36 [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- vbuz1_neq_vbuc1_then_la1 - lda _7 cmp #$19 bne b2 jmp b8 - //SEG37 animate::@8 + //SEG33 animate::@8 b8: - //SEG38 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG34 [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+0 jmp b2 - //SEG39 animate::@2 + //SEG35 animate::@2 b2: - //SEG40 [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:2::animate:9 [ animate::$10 ] ) -- vbuz1=_deref_pbuc1 + //SEG36 [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuz1=_deref_pbuc1_minus_1 lda XPOS+1 - sta _10 - //SEG41 [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:2::animate:9 [ animate::$11 ] ) -- vbuz1=vbuz2_minus_1 - lda _10 sec sbc #1 - sta _11 - //SEG42 [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _11 + sta _6 + //SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _6 sta XPOS+1 - //SEG43 [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuz1=_deref_pbuc1 + //SEG38 [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS+1 - sta _12 - //SEG44 [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- vbuz1_neq_vbuc1_then_la1 - lda _12 cmp #$ff bne b3 jmp b9 - //SEG45 animate::@9 + //SEG39 animate::@9 b9: - //SEG46 [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #$28 sta XPOS+1 jmp b3 - //SEG47 animate::@3 + //SEG41 animate::@3 b3: - //SEG48 [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) -- vbuz1=_deref_pbuc1 + //SEG42 [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuz1=_deref_pbuc1_plus_1 lda YPOS+2 - sta _15 - //SEG49 [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:2::animate:9 [ animate::$16 ] ) -- vbuz1=vbuz2_plus_1 - lda _15 clc adc #1 - sta _16 - //SEG50 [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _16 + sta _9 + //SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _9 sta YPOS+2 - //SEG51 [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:2::animate:9 [ animate::$17 ] ) -- vbuz1=_deref_pbuc1 + //SEG44 [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+2 - sta _17 - //SEG52 [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- vbuz1_neq_vbuc1_then_la1 - lda _17 cmp #$19 bne b4 jmp b10 - //SEG53 animate::@10 + //SEG45 animate::@10 b10: - //SEG54 [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+2 jmp b4 - //SEG55 animate::@4 + //SEG47 animate::@4 b4: - //SEG56 [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:2::animate:9 [ animate::$20 ] ) -- vbuz1=_deref_pbuc1 + //SEG48 [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuz1=_deref_pbuc1_minus_1 lda YPOS+3 - sta _20 - //SEG57 [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:2::animate:9 [ animate::$21 ] ) -- vbuz1=vbuz2_minus_1 - lda _20 sec sbc #1 - sta _21 - //SEG58 [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _21 + sta _12 + //SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _12 sta YPOS+3 - //SEG59 [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:2::animate:9 [ animate::$22 ] ) -- vbuz1=_deref_pbuc1 + //SEG50 [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+3 - sta _22 - //SEG60 [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- vbuz1_neq_vbuc1_then_la1 - lda _22 cmp #$ff bne breturn jmp b11 - //SEG61 animate::@11 + //SEG51 animate::@11 b11: - //SEG62 [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG52 [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #$19 sta YPOS+3 - //SEG63 [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:2::animate:9 [ animate::$25 ] ) -- vbuz1=_deref_pbuc1 + //SEG53 [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) -- vbuz1=_deref_pbuc1_plus_vbuc2 lda XPOS+3 - sta _25 - //SEG64 [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) -- vbuz1=vbuz2_plus_vbuc1 - lda _25 clc adc #7 - sta _26 - //SEG65 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _26 + sta _15 + //SEG54 [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _15 sta XPOS+3 - //SEG66 [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:2::animate:9 [ animate::$27 ] ) -- vbuz1=_deref_pbuc1 + //SEG55 [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_lt_vbuc2_then_la1 lda XPOS+3 - sta _27 - //SEG67 [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- vbuz1_lt_vbuc1_then_la1 - lda _27 cmp #$28 bcc breturn jmp b12 - //SEG68 animate::@12 + //SEG56 animate::@12 b12: - //SEG69 [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:2::animate:9 [ animate::$30 ] ) -- vbuz1=_deref_pbuc1 + //SEG57 [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) -- vbuz1=_deref_pbuc1_minus_vbuc2 lda XPOS+3 - sta _30 - //SEG70 [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) -- vbuz1=vbuz2_minus_vbuc1 - lda _30 sec sbc #$28 - sta _31 - //SEG71 [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 - lda _31 + sta _18 + //SEG58 [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1 + lda _18 sta XPOS+3 jmp breturn - //SEG72 animate::@return + //SEG59 animate::@return breturn: - //SEG73 [50] return [ ] ( main:2::animate:9 [ ] ) + //SEG60 [37] return [ ] ( main:2::animate:9 [ ] ) rts } -//SEG74 render +//SEG61 render render: { - .label col = $24 + .label col = $17 .label x = 5 .label colline = 3 .label y = 2 - //SEG75 [52] phi from render to render::@1 [phi:render->render::@1] + //SEG62 [39] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG76 [52] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 + //SEG63 [39] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 lda #COLORS sta colline+1 - //SEG77 [52] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 + //SEG64 [39] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG78 [52] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG65 [39] phi from render::@3 to render::@1 [phi:render::@3->render::@1] b1_from_b3: - //SEG79 [52] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy - //SEG80 [52] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy + //SEG66 [39] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG67 [39] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy jmp b1 - //SEG81 render::@1 + //SEG68 render::@1 b1: - //SEG82 [53] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG69 [40] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG83 [53] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 + //SEG70 [40] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG84 [53] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG71 [40] phi from render::@5 to render::@2 [phi:render::@5->render::@2] b2_from_b5: - //SEG85 [53] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy + //SEG72 [40] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy jmp b2 - //SEG86 render::@2 + //SEG73 render::@2 b2: - //SEG87 [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) -- vbuz1=vbuz2 + //SEG74 [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) -- vbuz1=vbuz2 lda x sta findcol.x - //SEG88 [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) -- vbuz1=vbuz2 + //SEG75 [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) -- vbuz1=vbuz2 lda y sta findcol.y - //SEG89 [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - //SEG90 [66] phi from render::@2 to findcol [phi:render::@2->findcol] + //SEG76 [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + //SEG77 [53] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol - //SEG91 [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) -- vbuz1=vbuz2 + //SEG78 [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) -- vbuz1=vbuz2 lda findcol.return_2 sta findcol.return jmp b5 - //SEG92 render::@5 + //SEG79 render::@5 b5: - //SEG93 [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) -- vbuz1=vbuz2 + //SEG80 [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) -- vbuz1=vbuz2 lda findcol.return sta col - //SEG94 [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuz3 + //SEG81 [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuz3 lda col ldy x sta (colline),y - //SEG95 [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG82 [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG96 [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG83 [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2_from_b5 jmp b3 - //SEG97 render::@3 + //SEG84 render::@3 b3: - //SEG98 [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG85 [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda colline clc adc #$28 @@ -7781,27 +7289,27 @@ render: { bcc !+ inc colline+1 !: - //SEG99 [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG86 [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG100 [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG87 [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b3 jmp breturn - //SEG101 render::@return + //SEG88 render::@return breturn: - //SEG102 [65] return [ ] ( main:2::render:7 [ ] ) + //SEG89 [52] return [ ] ( main:2::render:7 [ ] ) rts } -//SEG103 findcol +//SEG90 findcol findcol: { - .label _12 = $27 - .label _14 = $28 - .label x = $21 - .label y = $22 - .label return = $23 - .label xp = $25 - .label yp = $26 + .label _10 = $1a + .label _12 = $1b + .label x = $14 + .label y = $15 + .label return = $16 + .label xp = $18 + .label yp = $19 .label return_2 = 8 .label diff = 9 .label diff_2 = $a @@ -7812,189 +7320,189 @@ findcol: { .label mindiff = 7 .label mindiff_11 = $a .label mindiff_15 = $a - //SEG104 [67] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG91 [54] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG105 [67] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1 + //SEG92 [54] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuz1=vbuc1 lda #0 sta mincol - //SEG106 [67] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 + //SEG93 [54] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 lda #$ff sta mindiff - //SEG107 [67] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 + //SEG94 [54] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- vbuz1=vbuc1 lda #0 sta i jmp b1 - //SEG108 findcol::@1 + //SEG95 findcol::@1 b1: - //SEG109 [68] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG96 [55] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda XPOS,x sta xp - //SEG110 [69] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG97 [56] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda YPOS,x sta yp - //SEG111 [70] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG98 [57] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 lda x cmp xp bne b2 jmp b9 - //SEG112 findcol::@9 + //SEG99 findcol::@9 b9: - //SEG113 [71] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG100 [58] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 lda y cmp yp bne b2 - //SEG114 [72] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG101 [59] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG115 [72] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- vbuz1=vbuc1 + //SEG102 [59] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- vbuz1=vbuc1 lda #0 sta return_2 jmp breturn - //SEG116 findcol::@return + //SEG103 findcol::@return breturn: - //SEG117 [73] return [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + //SEG104 [60] return [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) rts - //SEG118 findcol::@2 + //SEG105 findcol::@2 b2: - //SEG119 [74] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG106 [61] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_ge_vbuz2_then_la1 lda x cmp xp bcs b4 jmp b12 - //SEG120 findcol::@12 + //SEG107 findcol::@12 b12: - //SEG121 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) -- vbuz1=vbuz2_minus_vbuz3 + //SEG108 [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) -- vbuz1=vbuz2_minus_vbuz3 lda xp sec sbc x sta diff - //SEG122 [76] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG109 [63] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] b5_from_b12: b5_from_b4: - //SEG123 [76] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy + //SEG110 [63] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy jmp b5 - //SEG124 findcol::@5 + //SEG111 findcol::@5 b5: - //SEG125 [77] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG112 [64] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) -- vbuz1_ge_vbuz2_then_la1 lda y cmp yp bcs b6 jmp b14 - //SEG126 findcol::@14 + //SEG113 findcol::@14 b14: - //SEG127 [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) -- vbuz1=vbuz2_minus_vbuz3 + //SEG114 [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) -- vbuz1=vbuz2_minus_vbuz3 lda yp sec sbc y - sta _12 - //SEG128 [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) -- vbuz1=vbuz2_plus_vbuz3 + sta _10 + //SEG115 [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) -- vbuz1=vbuz2_plus_vbuz3 lda diff clc - adc _12 + adc _10 sta diff_3 - //SEG129 [80] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG116 [67] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] b7_from_b14: b7_from_b6: - //SEG130 [80] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy + //SEG117 [67] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy jmp b7 - //SEG131 findcol::@7 + //SEG118 findcol::@7 b7: - //SEG132 [81] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG119 [68] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) -- vbuz1_ge_vbuz2_then_la1 lda diff_6 cmp mindiff bcs b21 jmp b16 - //SEG133 findcol::@16 + //SEG120 findcol::@16 b16: - //SEG134 [82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG121 [69] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldx i lda COLS,x sta mincol - //SEG135 [83] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG122 [70] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] b8_from_b16: b8_from_b21: - //SEG136 [83] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy - //SEG137 [83] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy + //SEG123 [70] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG124 [70] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy jmp b8 - //SEG138 findcol::@8 + //SEG125 findcol::@8 b8: - //SEG139 [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuz1=_inc_vbuz1 + //SEG126 [71] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG140 [85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG127 [72] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuz1_lt_vbuc1_then_la1 lda i cmp #numpoints bcc b19 - //SEG141 [72] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG128 [59] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG142 [72] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy + //SEG129 [59] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn - //SEG143 findcol::@19 + //SEG130 findcol::@19 b19: - //SEG144 [86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) -- vbuz1=vbuz2 + //SEG131 [73] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) -- vbuz1=vbuz2 lda mindiff_11 sta mindiff - //SEG145 [67] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG132 [54] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG146 [67] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy - //SEG147 [67] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy - //SEG148 [67] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy + //SEG133 [54] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG134 [54] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG135 [54] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 - //SEG149 findcol::@21 + //SEG136 findcol::@21 b21: - //SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuz1=vbuz2 + //SEG137 [74] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuz1=vbuz2 lda mindiff sta mindiff_15 jmp b8_from_b21 - //SEG151 findcol::@6 + //SEG138 findcol::@6 b6: - //SEG152 [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) -- vbuz1=vbuz2_minus_vbuz3 + //SEG139 [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) -- vbuz1=vbuz2_minus_vbuz3 lda y sec sbc yp - sta _14 - //SEG153 [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) -- vbuz1=vbuz2_plus_vbuz3 + sta _12 + //SEG140 [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) -- vbuz1=vbuz2_plus_vbuz3 lda diff clc - adc _14 + adc _12 sta diff_2 jmp b7_from_b6 - //SEG154 findcol::@4 + //SEG141 findcol::@4 b4: - //SEG155 [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) -- vbuz1=vbuz2_minus_vbuz3 + //SEG142 [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) -- vbuz1=vbuz2_minus_vbuz3 lda x sec sbc xp sta diff jmp b5_from_b4 } -//SEG156 initscreen +//SEG143 initscreen initscreen: { .label screen = $b - //SEG157 [92] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG144 [79] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG158 [92] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 + //SEG145 [79] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG159 [92] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG146 [79] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG160 [92] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG147 [79] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy jmp b1 - //SEG161 initscreen::@1 + //SEG148 initscreen::@1 b1: - //SEG162 [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #FILL sta (screen),y - //SEG163 [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG164 [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG151 [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8004,58 +7512,76 @@ initscreen: { bcc b1_from_b1 !: jmp breturn - //SEG165 initscreen::@return + //SEG152 initscreen::@return breturn: - //SEG166 [96] return [ ] ( main:2::initscreen:5 [ ] ) + //SEG153 [83] return [ ] ( main:2::initscreen:5 [ ] ) rts } REGISTER UPLIFT POTENTIAL REGISTERS -Equivalence Class zp ZP_BYTE:13 [ animate::$0 ] has ALU potential. -Equivalence Class zp ZP_BYTE:16 [ animate::$5 ] has ALU potential. -Equivalence Class zp ZP_BYTE:22 [ animate::$15 ] has ALU potential. -Equivalence Class zp ZP_BYTE:28 [ animate::$25 ] has ALU potential. -Statement [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) always clobbers reg byte a -Statement [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) always clobbers reg byte a -Statement [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a +Statement [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) always clobbers reg byte a +Statement [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) always clobbers reg byte a +Statement [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) always clobbers reg byte a +Statement [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) always clobbers reg byte a +Statement [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) always clobbers reg byte a +Statement [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a +Statement [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) always clobbers reg byte a +Statement [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render::y#4 render::y#1 ] -Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a +Statement [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ render::x#2 render::x#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ findcol::x#0 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:34 [ findcol::y#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:20 [ findcol::x#0 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:21 [ findcol::y#0 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] -Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ findcol::yp#0 ] -Statement [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ findcol::yp#0 ] +Statement [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] -Statement [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) always clobbers reg byte a -Statement [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) always clobbers reg byte a -Statement [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) always clobbers reg byte a -Statement [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) always clobbers reg byte a -Statement [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) always clobbers reg byte a -Statement [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a -Statement [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) always clobbers reg byte a -Statement [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) always clobbers reg byte a -Statement [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a -Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a -Statement [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) always clobbers reg byte a -Statement [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) always clobbers reg byte a -Statement [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) always clobbers reg byte a -Statement [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) always clobbers reg byte a -Statement [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) always clobbers reg byte a -Statement [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) always clobbers reg byte a +Statement [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) always clobbers reg byte a +Statement [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) always clobbers reg byte a +Statement [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) always clobbers reg byte a +Statement [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) always clobbers reg byte a +Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) always clobbers reg byte a +Statement [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) always clobbers reg byte a +Statement [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) always clobbers reg byte a +Statement [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) always clobbers reg byte a +Statement [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) always clobbers reg byte a +Statement [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) always clobbers reg byte a +Statement [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a +Statement [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a +Statement [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) always clobbers reg byte a +Statement [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) always clobbers reg byte a +Statement [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) always clobbers reg byte a +Statement [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) always clobbers reg byte a +Statement [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) always clobbers reg byte a +Statement [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) always clobbers reg byte a +Statement [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) always clobbers reg byte a +Statement [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) always clobbers reg byte a +Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y +Statement [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ render::y#4 render::y#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ render::x#2 render::x#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -8065,115 +7591,65 @@ Potential registers zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol: Potential registers zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] : zp ZP_BYTE:9 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y , Potential registers zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] : zp ZP_WORD:11 , -Potential registers zp ZP_BYTE:13 [ animate::$0 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:14 [ animate::$1 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:15 [ animate::$2 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:16 [ animate::$5 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:17 [ animate::$6 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:18 [ animate::$7 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:19 [ animate::$10 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:20 [ animate::$11 ] : zp ZP_BYTE:20 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:21 [ animate::$12 ] : zp ZP_BYTE:21 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:22 [ animate::$15 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:23 [ animate::$16 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:24 [ animate::$17 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:25 [ animate::$20 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:26 [ animate::$21 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:27 [ animate::$22 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:28 [ animate::$25 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y , reg byte alu , -Potential registers zp ZP_BYTE:29 [ animate::$26 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:30 [ animate::$27 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:31 [ animate::$30 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:32 [ animate::$31 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:33 [ findcol::x#0 ] : zp ZP_BYTE:33 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:34 [ findcol::y#0 ] : zp ZP_BYTE:34 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:35 [ findcol::return#0 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:36 [ render::col#0 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:37 [ findcol::xp#0 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:38 [ findcol::yp#0 ] : zp ZP_BYTE:38 , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:39 [ findcol::$12 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y , -Potential registers zp ZP_BYTE:40 [ findcol::$14 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:13 [ animate::$0 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:14 [ animate::$3 ] : zp ZP_BYTE:14 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:15 [ animate::$6 ] : zp ZP_BYTE:15 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:16 [ animate::$9 ] : zp ZP_BYTE:16 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:17 [ animate::$12 ] : zp ZP_BYTE:17 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:18 [ animate::$15 ] : zp ZP_BYTE:18 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:19 [ animate::$18 ] : zp ZP_BYTE:19 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:20 [ findcol::x#0 ] : zp ZP_BYTE:20 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:21 [ findcol::y#0 ] : zp ZP_BYTE:21 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:22 [ findcol::return#0 ] : zp ZP_BYTE:22 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:23 [ render::col#0 ] : zp ZP_BYTE:23 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:24 [ findcol::xp#0 ] : zp ZP_BYTE:24 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:25 [ findcol::yp#0 ] : zp ZP_BYTE:25 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:26 [ findcol::$10 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:27 [ findcol::$12 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES -Uplift Scope [findcol] 83,341.67: zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] 50,005: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] 34,846.92: zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] 21,877.19: zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] 20,002: zp ZP_BYTE:39 [ findcol::$12 ] 20,002: zp ZP_BYTE:40 [ findcol::$14 ] 12,632.84: zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] 10,001: zp ZP_BYTE:37 [ findcol::xp#0 ] 6,250.62: zp ZP_BYTE:38 [ findcol::yp#0 ] 2,002: zp ZP_BYTE:35 [ findcol::return#0 ] 1,708.54: zp ZP_BYTE:34 [ findcol::y#0 ] 1,640.2: zp ZP_BYTE:33 [ findcol::x#0 ] -Uplift Scope [render] 2,073.5: zp ZP_BYTE:5 [ render::x#2 render::x#1 ] 2,002: zp ZP_BYTE:36 [ render::col#0 ] 260.86: zp ZP_BYTE:2 [ render::y#4 render::y#1 ] 187.63: zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] -Uplift Scope [animate] 4: zp ZP_BYTE:13 [ animate::$0 ] 4: zp ZP_BYTE:14 [ animate::$1 ] 4: zp ZP_BYTE:15 [ animate::$2 ] 4: zp ZP_BYTE:16 [ animate::$5 ] 4: zp ZP_BYTE:17 [ animate::$6 ] 4: zp ZP_BYTE:18 [ animate::$7 ] 4: zp ZP_BYTE:19 [ animate::$10 ] 4: zp ZP_BYTE:20 [ animate::$11 ] 4: zp ZP_BYTE:21 [ animate::$12 ] 4: zp ZP_BYTE:22 [ animate::$15 ] 4: zp ZP_BYTE:23 [ animate::$16 ] 4: zp ZP_BYTE:24 [ animate::$17 ] 4: zp ZP_BYTE:25 [ animate::$20 ] 4: zp ZP_BYTE:26 [ animate::$21 ] 4: zp ZP_BYTE:27 [ animate::$22 ] 4: zp ZP_BYTE:28 [ animate::$25 ] 4: zp ZP_BYTE:29 [ animate::$26 ] 4: zp ZP_BYTE:30 [ animate::$27 ] 4: zp ZP_BYTE:31 [ animate::$30 ] 4: zp ZP_BYTE:32 [ animate::$31 ] +Uplift Scope [findcol] 83,341.67: zp ZP_BYTE:10 [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] 50,005: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] 34,846.92: zp ZP_BYTE:8 [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] 21,877.19: zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] 20,002: zp ZP_BYTE:26 [ findcol::$10 ] 20,002: zp ZP_BYTE:27 [ findcol::$12 ] 12,632.84: zp ZP_BYTE:6 [ findcol::i#10 findcol::i#1 ] 10,001: zp ZP_BYTE:24 [ findcol::xp#0 ] 6,250.62: zp ZP_BYTE:25 [ findcol::yp#0 ] 2,002: zp ZP_BYTE:22 [ findcol::return#0 ] 1,708.54: zp ZP_BYTE:21 [ findcol::y#0 ] 1,640.2: zp ZP_BYTE:20 [ findcol::x#0 ] +Uplift Scope [render] 2,073.5: zp ZP_BYTE:5 [ render::x#2 render::x#1 ] 2,002: zp ZP_BYTE:23 [ render::col#0 ] 260.86: zp ZP_BYTE:2 [ render::y#4 render::y#1 ] 187.63: zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] Uplift Scope [initscreen] 33: zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] +Uplift Scope [animate] 4: zp ZP_BYTE:13 [ animate::$0 ] 4: zp ZP_BYTE:14 [ animate::$3 ] 4: zp ZP_BYTE:15 [ animate::$6 ] 4: zp ZP_BYTE:16 [ animate::$9 ] 4: zp ZP_BYTE:17 [ animate::$12 ] 4: zp ZP_BYTE:18 [ animate::$15 ] 4: zp ZP_BYTE:19 [ animate::$18 ] Uplift Scope [main] Uplift Scope [] Uplift attempts [findcol] 10000/2239488 (limiting to 10000) -Uplifting [findcol] best 1714313 combination reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte a [ findcol::$12 ] reg byte a [ findcol::$14 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:37 [ findcol::xp#0 ] zp ZP_BYTE:38 [ findcol::yp#0 ] zp ZP_BYTE:35 [ findcol::return#0 ] zp ZP_BYTE:34 [ findcol::y#0 ] zp ZP_BYTE:33 [ findcol::x#0 ] +Uplifting [findcol] best 1714235 combination reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$12 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:24 [ findcol::xp#0 ] zp ZP_BYTE:25 [ findcol::yp#0 ] zp ZP_BYTE:22 [ findcol::return#0 ] zp ZP_BYTE:21 [ findcol::y#0 ] zp ZP_BYTE:20 [ findcol::x#0 ] Limited combination testing to 10000 combinations of 2239488 possible. -Uplifting [render] best 1708313 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] -Uplifting [initscreen] best 1708313 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] -Uplifting [main] best 1708313 combination -Uplifting [] best 1708313 combination +Uplifting [render] best 1708235 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] +Uplifting [initscreen] best 1708235 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] +Uplift attempts [animate] 10000/16384 (limiting to 10000) +Uplifting [animate] best 1708193 combination reg byte a [ animate::$0 ] reg byte a [ animate::$3 ] reg byte a [ animate::$6 ] reg byte a [ animate::$9 ] reg byte a [ animate::$12 ] reg byte a [ animate::$15 ] reg byte a [ animate::$18 ] +Limited combination testing to 10000 combinations of 16384 possible. +Uplifting [main] best 1708193 combination +Uplifting [] best 1708193 combination Attempting to uplift remaining variables inzp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] -Uplifting [findcol] best 1708313 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] +Uplifting [findcol] best 1708193 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] -Uplifting [findcol] best 1708313 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] -Attempting to uplift remaining variables inzp ZP_BYTE:37 [ findcol::xp#0 ] -Uplifting [findcol] best 1708313 combination zp ZP_BYTE:37 [ findcol::xp#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:38 [ findcol::yp#0 ] -Uplifting [findcol] best 1708313 combination zp ZP_BYTE:38 [ findcol::yp#0 ] +Uplifting [findcol] best 1708193 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] +Attempting to uplift remaining variables inzp ZP_BYTE:24 [ findcol::xp#0 ] +Uplifting [findcol] best 1708193 combination zp ZP_BYTE:24 [ findcol::xp#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:25 [ findcol::yp#0 ] +Uplifting [findcol] best 1708193 combination zp ZP_BYTE:25 [ findcol::yp#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render::x#2 render::x#1 ] -Uplifting [render] best 1708313 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:35 [ findcol::return#0 ] -Uplifting [findcol] best 1704313 combination reg byte a [ findcol::return#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:34 [ findcol::y#0 ] -Uplifting [findcol] best 1704313 combination zp ZP_BYTE:34 [ findcol::y#0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:33 [ findcol::x#0 ] -Uplifting [findcol] best 1704313 combination zp ZP_BYTE:33 [ findcol::x#0 ] +Uplifting [render] best 1708193 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] +Attempting to uplift remaining variables inzp ZP_BYTE:22 [ findcol::return#0 ] +Uplifting [findcol] best 1704193 combination reg byte a [ findcol::return#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:21 [ findcol::y#0 ] +Uplifting [findcol] best 1704193 combination zp ZP_BYTE:21 [ findcol::y#0 ] +Attempting to uplift remaining variables inzp ZP_BYTE:20 [ findcol::x#0 ] +Uplifting [findcol] best 1704193 combination zp ZP_BYTE:20 [ findcol::x#0 ] Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render::y#4 render::y#1 ] -Uplifting [render] best 1704313 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:13 [ animate::$0 ] -Uplifting [animate] best 1704307 combination reg byte a [ animate::$0 ] -Attempting to uplift remaining variables inzp ZP_BYTE:14 [ animate::$1 ] -Uplifting [animate] best 1704301 combination reg byte a [ animate::$1 ] -Attempting to uplift remaining variables inzp ZP_BYTE:15 [ animate::$2 ] -Uplifting [animate] best 1704295 combination reg byte a [ animate::$2 ] -Attempting to uplift remaining variables inzp ZP_BYTE:16 [ animate::$5 ] -Uplifting [animate] best 1704289 combination reg byte a [ animate::$5 ] -Attempting to uplift remaining variables inzp ZP_BYTE:17 [ animate::$6 ] -Uplifting [animate] best 1704283 combination reg byte a [ animate::$6 ] -Attempting to uplift remaining variables inzp ZP_BYTE:18 [ animate::$7 ] -Uplifting [animate] best 1704277 combination reg byte a [ animate::$7 ] -Attempting to uplift remaining variables inzp ZP_BYTE:19 [ animate::$10 ] -Uplifting [animate] best 1704271 combination reg byte x [ animate::$10 ] -Attempting to uplift remaining variables inzp ZP_BYTE:20 [ animate::$11 ] -Uplifting [animate] best 1704263 combination reg byte x [ animate::$11 ] -Attempting to uplift remaining variables inzp ZP_BYTE:21 [ animate::$12 ] -Uplifting [animate] best 1704257 combination reg byte a [ animate::$12 ] -Attempting to uplift remaining variables inzp ZP_BYTE:22 [ animate::$15 ] -Uplifting [animate] best 1704251 combination reg byte a [ animate::$15 ] -Attempting to uplift remaining variables inzp ZP_BYTE:23 [ animate::$16 ] -Uplifting [animate] best 1704245 combination reg byte a [ animate::$16 ] -Attempting to uplift remaining variables inzp ZP_BYTE:24 [ animate::$17 ] -Uplifting [animate] best 1704239 combination reg byte a [ animate::$17 ] -Attempting to uplift remaining variables inzp ZP_BYTE:25 [ animate::$20 ] -Uplifting [animate] best 1704233 combination reg byte x [ animate::$20 ] -Attempting to uplift remaining variables inzp ZP_BYTE:26 [ animate::$21 ] -Uplifting [animate] best 1704225 combination reg byte x [ animate::$21 ] -Attempting to uplift remaining variables inzp ZP_BYTE:27 [ animate::$22 ] -Uplifting [animate] best 1704219 combination reg byte a [ animate::$22 ] -Attempting to uplift remaining variables inzp ZP_BYTE:28 [ animate::$25 ] -Uplifting [animate] best 1704213 combination reg byte a [ animate::$25 ] -Attempting to uplift remaining variables inzp ZP_BYTE:29 [ animate::$26 ] -Uplifting [animate] best 1704207 combination reg byte a [ animate::$26 ] -Attempting to uplift remaining variables inzp ZP_BYTE:30 [ animate::$27 ] -Uplifting [animate] best 1704201 combination reg byte a [ animate::$27 ] -Attempting to uplift remaining variables inzp ZP_BYTE:31 [ animate::$30 ] -Uplifting [animate] best 1704195 combination reg byte a [ animate::$30 ] -Attempting to uplift remaining variables inzp ZP_BYTE:32 [ animate::$31 ] -Uplifting [animate] best 1704189 combination reg byte a [ animate::$31 ] -Coalescing zero page register [ zp ZP_BYTE:2 [ render::y#4 render::y#1 ] ] with [ zp ZP_BYTE:34 [ findcol::y#0 ] ] +Uplifting [render] best 1704193 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ] +Coalescing zero page register [ zp ZP_BYTE:2 [ render::y#4 render::y#1 ] ] with [ zp ZP_BYTE:21 [ findcol::y#0 ] ] Coalescing zero page register [ zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] ] with [ zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] ] -Coalescing zero page register [ zp ZP_BYTE:5 [ render::x#2 render::x#1 ] ] with [ zp ZP_BYTE:33 [ findcol::x#0 ] ] -Coalescing zero page register [ zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] ] with [ zp ZP_BYTE:37 [ findcol::xp#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:5 [ render::x#2 render::x#1 ] ] with [ zp ZP_BYTE:20 [ findcol::x#0 ] ] +Coalescing zero page register [ zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] ] with [ zp ZP_BYTE:24 [ findcol::xp#0 ] ] Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ] Allocated (was zp ZP_BYTE:9) zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ] -Allocated (was zp ZP_BYTE:38) zp ZP_BYTE:8 [ findcol::yp#0 ] +Allocated (was zp ZP_BYTE:25) zp ZP_BYTE:8 [ findcol::yp#0 ] ASSEMBLER BEFORE OPTIMIZATION //SEG0 Basic Upstart @@ -8207,7 +7683,7 @@ bend: //SEG9 main main: { //SEG10 [5] call initscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [91] phi from main to initscreen [phi:main->initscreen] + //SEG11 [78] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG12 [6] phi from main main::@5 to main::@1 [phi:main/main::@5->main::@1] @@ -8217,7 +7693,7 @@ main: { //SEG13 main::@1 b1: //SEG14 [7] call render param-assignment [ ] ( main:2 [ ] ) - //SEG15 [51] phi from main::@1 to render [phi:main::@1->render] + //SEG15 [38] phi from main::@1 to render [phi:main::@1->render] render_from_b1: jsr render //SEG16 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] @@ -8240,197 +7716,186 @@ main: { } //SEG23 animate animate: { - //SEG24 [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuaa=_deref_pbuc1 + //SEG24 [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuaa=_deref_pbuc1_plus_1 lda XPOS+0 - //SEG25 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:2::animate:9 [ animate::$1 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG26 [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta XPOS+0 - //SEG27 [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:2::animate:9 [ animate::$2 ] ) -- vbuaa=_deref_pbuc1 + //SEG26 [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS+0 - //SEG28 [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #$28 bne b1 jmp b7 - //SEG29 animate::@7 + //SEG27 animate::@7 b7: - //SEG30 [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG28 [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta XPOS+0 jmp b1 - //SEG31 animate::@1 + //SEG29 animate::@1 b1: - //SEG32 [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:2::animate:9 [ animate::$5 ] ) -- vbuaa=_deref_pbuc1 + //SEG30 [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuaa=_deref_pbuc1_plus_1 lda YPOS+0 - //SEG33 [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG34 [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta YPOS+0 - //SEG35 [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:2::animate:9 [ animate::$7 ] ) -- vbuaa=_deref_pbuc1 + //SEG32 [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+0 - //SEG36 [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #$19 bne b2 jmp b8 - //SEG37 animate::@8 + //SEG33 animate::@8 b8: - //SEG38 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG34 [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+0 jmp b2 - //SEG39 animate::@2 + //SEG35 animate::@2 b2: - //SEG40 [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:2::animate:9 [ animate::$10 ] ) -- vbuxx=_deref_pbuc1 - ldx XPOS+1 - //SEG41 [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:2::animate:9 [ animate::$11 ] ) -- vbuxx=vbuxx_minus_1 - dex - //SEG42 [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx - stx XPOS+1 - //SEG43 [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuaa=_deref_pbuc1 + //SEG36 [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuaa=_deref_pbuc1_minus_1 + lda XPOS+1 + sec + sbc #1 + //SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + sta XPOS+1 + //SEG38 [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda XPOS+1 - //SEG44 [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #$ff bne b3 jmp b9 - //SEG45 animate::@9 + //SEG39 animate::@9 b9: - //SEG46 [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG40 [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #$28 sta XPOS+1 jmp b3 - //SEG47 animate::@3 + //SEG41 animate::@3 b3: - //SEG48 [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) -- vbuaa=_deref_pbuc1 + //SEG42 [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuaa=_deref_pbuc1_plus_1 lda YPOS+2 - //SEG49 [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:2::animate:9 [ animate::$16 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG50 [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta YPOS+2 - //SEG51 [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:2::animate:9 [ animate::$17 ] ) -- vbuaa=_deref_pbuc1 + //SEG44 [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+2 - //SEG52 [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #$19 bne b4 jmp b10 - //SEG53 animate::@10 + //SEG45 animate::@10 b10: - //SEG54 [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+2 jmp b4 - //SEG55 animate::@4 + //SEG47 animate::@4 b4: - //SEG56 [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:2::animate:9 [ animate::$20 ] ) -- vbuxx=_deref_pbuc1 - ldx YPOS+3 - //SEG57 [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:2::animate:9 [ animate::$21 ] ) -- vbuxx=vbuxx_minus_1 - dex - //SEG58 [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx - stx YPOS+3 - //SEG59 [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:2::animate:9 [ animate::$22 ] ) -- vbuaa=_deref_pbuc1 + //SEG48 [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuaa=_deref_pbuc1_minus_1 + lda YPOS+3 + sec + sbc #1 + //SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + sta YPOS+3 + //SEG50 [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 lda YPOS+3 - //SEG60 [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 cmp #$ff bne breturn jmp b11 - //SEG61 animate::@11 + //SEG51 animate::@11 b11: - //SEG62 [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG52 [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #$19 sta YPOS+3 - //SEG63 [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:2::animate:9 [ animate::$25 ] ) -- vbuaa=_deref_pbuc1 + //SEG53 [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) -- vbuaa=_deref_pbuc1_plus_vbuc2 lda XPOS+3 - //SEG64 [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) -- vbuaa=vbuaa_plus_vbuc1 clc adc #7 - //SEG65 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG54 [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta XPOS+3 - //SEG66 [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:2::animate:9 [ animate::$27 ] ) -- vbuaa=_deref_pbuc1 + //SEG55 [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_lt_vbuc2_then_la1 lda XPOS+3 - //SEG67 [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- vbuaa_lt_vbuc1_then_la1 cmp #$28 bcc breturn jmp b12 - //SEG68 animate::@12 + //SEG56 animate::@12 b12: - //SEG69 [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:2::animate:9 [ animate::$30 ] ) -- vbuaa=_deref_pbuc1 + //SEG57 [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) -- vbuaa=_deref_pbuc1_minus_vbuc2 lda XPOS+3 - //SEG70 [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) -- vbuaa=vbuaa_minus_vbuc1 sec sbc #$28 - //SEG71 [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG58 [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta XPOS+3 jmp breturn - //SEG72 animate::@return + //SEG59 animate::@return breturn: - //SEG73 [50] return [ ] ( main:2::animate:9 [ ] ) + //SEG60 [37] return [ ] ( main:2::animate:9 [ ] ) rts } -//SEG74 render +//SEG61 render render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG75 [52] phi from render to render::@1 [phi:render->render::@1] + //SEG62 [39] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG76 [52] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 + //SEG63 [39] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 lda #COLORS sta colline+1 - //SEG77 [52] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 + //SEG64 [39] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 lda #0 sta y jmp b1 - //SEG78 [52] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG65 [39] phi from render::@3 to render::@1 [phi:render::@3->render::@1] b1_from_b3: - //SEG79 [52] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy - //SEG80 [52] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy + //SEG66 [39] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG67 [39] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy jmp b1 - //SEG81 render::@1 + //SEG68 render::@1 b1: - //SEG82 [53] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG69 [40] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG83 [53] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 + //SEG70 [40] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 lda #0 sta x jmp b2 - //SEG84 [53] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG71 [40] phi from render::@5 to render::@2 [phi:render::@5->render::@2] b2_from_b5: - //SEG85 [53] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy + //SEG72 [40] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy jmp b2 - //SEG86 render::@2 + //SEG73 render::@2 b2: - //SEG87 [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) + //SEG74 [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) // (byte) findcol::x#0 = (byte) render::x#2 // register copy zp ZP_BYTE:5 - //SEG88 [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) + //SEG75 [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) // (byte) findcol::y#0 = (byte) render::y#4 // register copy zp ZP_BYTE:2 - //SEG89 [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - //SEG90 [66] phi from render::@2 to findcol [phi:render::@2->findcol] + //SEG76 [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + //SEG77 [53] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol - //SEG91 [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) -- vbuaa=vbuyy + //SEG78 [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) -- vbuaa=vbuyy tya jmp b5 - //SEG92 render::@5 + //SEG79 render::@5 b5: - //SEG93 [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) + //SEG80 [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) // (byte) render::col#0 = (byte) findcol::return#0 // register copy reg byte a - //SEG94 [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuaa + //SEG81 [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuaa ldy x sta (colline),y - //SEG95 [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG82 [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG96 [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG83 [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2_from_b5 jmp b3 - //SEG97 render::@3 + //SEG84 render::@3 b3: - //SEG98 [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG85 [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda colline clc adc #$28 @@ -8438,19 +7903,19 @@ render: { bcc !+ inc colline+1 !: - //SEG99 [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG86 [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG100 [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG87 [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1_from_b3 jmp breturn - //SEG101 render::@return + //SEG88 render::@return breturn: - //SEG102 [65] return [ ] ( main:2::render:7 [ ] ) + //SEG89 [52] return [ ] ( main:2::render:7 [ ] ) rts } -//SEG103 findcol +//SEG90 findcol findcol: { .label x = 5 .label y = 2 @@ -8458,172 +7923,172 @@ findcol: { .label yp = 8 .label diff = 7 .label mindiff = 6 - //SEG104 [67] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG91 [54] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG105 [67] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuyy=vbuc1 + //SEG92 [54] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG106 [67] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 + //SEG93 [54] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 lda #$ff sta mindiff - //SEG107 [67] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- vbuxx=vbuc1 + //SEG94 [54] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- vbuxx=vbuc1 ldx #0 jmp b1 - //SEG108 findcol::@1 + //SEG95 findcol::@1 b1: - //SEG109 [68] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG96 [55] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx lda XPOS,x sta xp - //SEG110 [69] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG97 [56] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx lda YPOS,x sta yp - //SEG111 [70] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG98 [57] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 lda x cmp xp bne b2 jmp b9 - //SEG112 findcol::@9 + //SEG99 findcol::@9 b9: - //SEG113 [71] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG100 [58] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 lda y cmp yp bne b2 - //SEG114 [72] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG101 [59] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG115 [72] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- vbuyy=vbuc1 + //SEG102 [59] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- vbuyy=vbuc1 ldy #0 jmp breturn - //SEG116 findcol::@return + //SEG103 findcol::@return breturn: - //SEG117 [73] return [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + //SEG104 [60] return [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) rts - //SEG118 findcol::@2 + //SEG105 findcol::@2 b2: - //SEG119 [74] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG106 [61] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_ge_vbuz2_then_la1 lda x cmp xp bcs b4 jmp b12 - //SEG120 findcol::@12 + //SEG107 findcol::@12 b12: - //SEG121 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG108 [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda diff sec sbc x sta diff - //SEG122 [76] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG109 [63] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] b5_from_b12: b5_from_b4: - //SEG123 [76] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy + //SEG110 [63] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy jmp b5 - //SEG124 findcol::@5 + //SEG111 findcol::@5 b5: - //SEG125 [77] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG112 [64] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) -- vbuz1_ge_vbuz2_then_la1 lda y cmp yp bcs b6 jmp b14 - //SEG126 findcol::@14 + //SEG113 findcol::@14 b14: - //SEG127 [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) -- vbuaa=vbuz1_minus_vbuz2 + //SEG114 [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) -- vbuaa=vbuz1_minus_vbuz2 lda yp sec sbc y - //SEG128 [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) -- vbuaa=vbuz1_plus_vbuaa + //SEG115 [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) -- vbuaa=vbuz1_plus_vbuaa clc adc diff - //SEG129 [80] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG116 [67] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] b7_from_b14: b7_from_b6: - //SEG130 [80] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy + //SEG117 [67] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy jmp b7 - //SEG131 findcol::@7 + //SEG118 findcol::@7 b7: - //SEG132 [81] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) -- vbuaa_ge_vbuz1_then_la1 + //SEG119 [68] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) -- vbuaa_ge_vbuz1_then_la1 cmp mindiff bcs b21 jmp b16 - //SEG133 findcol::@16 + //SEG120 findcol::@16 b16: - //SEG134 [82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG121 [69] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) -- vbuyy=pbuc1_derefidx_vbuxx ldy COLS,x - //SEG135 [83] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG122 [70] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] b8_from_b16: b8_from_b21: - //SEG136 [83] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy - //SEG137 [83] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy + //SEG123 [70] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG124 [70] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy jmp b8 - //SEG138 findcol::@8 + //SEG125 findcol::@8 b8: - //SEG139 [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx=_inc_vbuxx + //SEG126 [71] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx=_inc_vbuxx inx - //SEG140 [85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG127 [72] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #numpoints bcc b19 - //SEG141 [72] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG128 [59] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG142 [72] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy + //SEG129 [59] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn - //SEG143 findcol::@19 + //SEG130 findcol::@19 b19: - //SEG144 [86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) -- vbuz1=vbuaa + //SEG131 [73] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) -- vbuz1=vbuaa sta mindiff - //SEG145 [67] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG132 [54] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG146 [67] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy - //SEG147 [67] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy - //SEG148 [67] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy + //SEG133 [54] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG134 [54] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG135 [54] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 - //SEG149 findcol::@21 + //SEG136 findcol::@21 b21: - //SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1 + //SEG137 [74] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1 lda mindiff jmp b8_from_b21 - //SEG151 findcol::@6 + //SEG138 findcol::@6 b6: - //SEG152 [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) -- vbuaa=vbuz1_minus_vbuz2 + //SEG139 [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) -- vbuaa=vbuz1_minus_vbuz2 lda y sec sbc yp - //SEG153 [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) -- vbuaa=vbuz1_plus_vbuaa + //SEG140 [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) -- vbuaa=vbuz1_plus_vbuaa clc adc diff jmp b7_from_b6 - //SEG154 findcol::@4 + //SEG141 findcol::@4 b4: - //SEG155 [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) -- vbuz1=vbuz2_minus_vbuz1 + //SEG142 [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) -- vbuz1=vbuz2_minus_vbuz1 lda x sec sbc diff sta diff jmp b5_from_b4 } -//SEG156 initscreen +//SEG143 initscreen initscreen: { .label screen = 3 - //SEG157 [92] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG144 [79] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG158 [92] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 + //SEG145 [79] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 jmp b1 - //SEG159 [92] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG146 [79] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG160 [92] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG147 [79] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy jmp b1 - //SEG161 initscreen::@1 + //SEG148 initscreen::@1 b1: - //SEG162 [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #FILL sta (screen),y - //SEG163 [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG164 [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG151 [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1_from_b1 @@ -8633,9 +8098,9 @@ initscreen: { bcc b1_from_b1 !: jmp breturn - //SEG165 initscreen::@return + //SEG152 initscreen::@return breturn: - //SEG166 [96] return [ ] ( main:2::initscreen:5 [ ] ) + //SEG153 [83] return [ ] ( main:2::initscreen:5 [ ] ) rts } @@ -8676,9 +8141,9 @@ Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda XPOS+0 Removing instruction lda YPOS+0 -Replacing instruction lda XPOS+1 with TXA +Removing instruction lda XPOS+1 Removing instruction lda YPOS+2 -Replacing instruction lda YPOS+3 with TXA +Removing instruction lda YPOS+3 Removing instruction lda XPOS+3 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label b1_from_b5 with b1 @@ -8763,25 +8228,12 @@ FINAL SYMBOL TABLE (const byte[]) YPOS#0 YPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 } (void()) animate() (byte~) animate::$0 reg byte a 4.0 -(byte~) animate::$1 reg byte a 4.0 -(byte~) animate::$10 reg byte x 4.0 -(byte~) animate::$11 reg byte x 4.0 (byte~) animate::$12 reg byte a 4.0 (byte~) animate::$15 reg byte a 4.0 -(byte~) animate::$16 reg byte a 4.0 -(byte~) animate::$17 reg byte a 4.0 -(byte~) animate::$2 reg byte a 4.0 -(byte~) animate::$20 reg byte x 4.0 -(byte~) animate::$21 reg byte x 4.0 -(byte~) animate::$22 reg byte a 4.0 -(byte~) animate::$25 reg byte a 4.0 -(byte~) animate::$26 reg byte a 4.0 -(byte~) animate::$27 reg byte a 4.0 -(byte~) animate::$30 reg byte a 4.0 -(byte~) animate::$31 reg byte a 4.0 -(byte~) animate::$5 reg byte a 4.0 +(byte~) animate::$18 reg byte a 4.0 +(byte~) animate::$3 reg byte a 4.0 (byte~) animate::$6 reg byte a 4.0 -(byte~) animate::$7 reg byte a 4.0 +(byte~) animate::$9 reg byte a 4.0 (label) animate::@1 (label) animate::@10 (label) animate::@11 @@ -8794,8 +8246,8 @@ FINAL SYMBOL TABLE (label) animate::@9 (label) animate::@return (byte()) findcol((byte) findcol::x , (byte) findcol::y) +(byte~) findcol::$10 reg byte a 20002.0 (byte~) findcol::$12 reg byte a 20002.0 -(byte~) findcol::$14 reg byte a 20002.0 (label) findcol::@1 (label) findcol::@12 (label) findcol::@14 @@ -8880,30 +8332,17 @@ reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::min zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ] reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] reg byte a [ animate::$0 ] -reg byte a [ animate::$1 ] -reg byte a [ animate::$2 ] -reg byte a [ animate::$5 ] +reg byte a [ animate::$3 ] reg byte a [ animate::$6 ] -reg byte a [ animate::$7 ] -reg byte x [ animate::$10 ] -reg byte x [ animate::$11 ] +reg byte a [ animate::$9 ] reg byte a [ animate::$12 ] reg byte a [ animate::$15 ] -reg byte a [ animate::$16 ] -reg byte a [ animate::$17 ] -reg byte x [ animate::$20 ] -reg byte x [ animate::$21 ] -reg byte a [ animate::$22 ] -reg byte a [ animate::$25 ] -reg byte a [ animate::$26 ] -reg byte a [ animate::$27 ] -reg byte a [ animate::$30 ] -reg byte a [ animate::$31 ] +reg byte a [ animate::$18 ] reg byte a [ findcol::return#0 ] reg byte a [ render::col#0 ] zp ZP_BYTE:8 [ findcol::yp#0 ] +reg byte a [ findcol::$10 ] reg byte a [ findcol::$12 ] -reg byte a [ findcol::$14 ] FINAL CODE //SEG0 Basic Upstart @@ -8929,13 +8368,13 @@ FINAL CODE //SEG9 main main: { //SEG10 [5] call initscreen param-assignment [ ] ( main:2 [ ] ) - //SEG11 [91] phi from main to initscreen [phi:main->initscreen] + //SEG11 [78] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG12 [6] phi from main main::@5 to main::@1 [phi:main/main::@5->main::@1] //SEG13 main::@1 b1: //SEG14 [7] call render param-assignment [ ] ( main:2 [ ] ) - //SEG15 [51] phi from main::@1 to render [phi:main::@1->render] + //SEG15 [38] phi from main::@1 to render [phi:main::@1->render] jsr render //SEG16 [8] phi from main::@1 to main::@4 [phi:main::@1->main::@4] //SEG17 main::@4 @@ -8949,162 +8388,149 @@ main: { } //SEG23 animate animate: { - //SEG24 [12] (byte~) animate::$0 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuaa=_deref_pbuc1 + //SEG24 [12] (byte~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuaa=_deref_pbuc1_plus_1 lda XPOS+0 - //SEG25 [13] (byte~) animate::$1 ← (byte~) animate::$0 + (byte/signed byte/word/signed word) 1 [ animate::$1 ] ( main:2::animate:9 [ animate::$1 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG26 [14] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta XPOS+0 - //SEG27 [15] (byte~) animate::$2 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$2 ] ( main:2::animate:9 [ animate::$2 ] ) -- vbuaa=_deref_pbuc1 - //SEG28 [16] if((byte~) animate::$2!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG26 [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$28 bne b1 - //SEG29 animate::@7 - //SEG30 [17] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG27 animate::@7 + //SEG28 [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta XPOS+0 - //SEG31 animate::@1 + //SEG29 animate::@1 b1: - //SEG32 [18] (byte~) animate::$5 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$5 ] ( main:2::animate:9 [ animate::$5 ] ) -- vbuaa=_deref_pbuc1 + //SEG30 [16] (byte~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuaa=_deref_pbuc1_plus_1 lda YPOS+0 - //SEG33 [19] (byte~) animate::$6 ← (byte~) animate::$5 + (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG34 [20] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta YPOS+0 - //SEG35 [21] (byte~) animate::$7 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0 [ animate::$7 ] ( main:2::animate:9 [ animate::$7 ] ) -- vbuaa=_deref_pbuc1 - //SEG36 [22] if((byte~) animate::$7!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG32 [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$19 bne b2 - //SEG37 animate::@8 - //SEG38 [23] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG33 animate::@8 + //SEG34 [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+0 - //SEG39 animate::@2 + //SEG35 animate::@2 b2: - //SEG40 [24] (byte~) animate::$10 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$10 ] ( main:2::animate:9 [ animate::$10 ] ) -- vbuxx=_deref_pbuc1 - ldx XPOS+1 - //SEG41 [25] (byte~) animate::$11 ← (byte~) animate::$10 - (byte/signed byte/word/signed word) 1 [ animate::$11 ] ( main:2::animate:9 [ animate::$11 ] ) -- vbuxx=vbuxx_minus_1 - dex - //SEG42 [26] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$11 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx - stx XPOS+1 - //SEG43 [27] (byte~) animate::$12 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuaa=_deref_pbuc1 - txa - //SEG44 [28] if((byte~) animate::$12!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG36 [20] (byte~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuaa=_deref_pbuc1_minus_1 + lda XPOS+1 + sec + sbc #1 + //SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + sta XPOS+1 + //SEG38 [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$ff bne b3 - //SEG45 animate::@9 - //SEG46 [29] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG39 animate::@9 + //SEG40 [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #$28 sta XPOS+1 - //SEG47 animate::@3 + //SEG41 animate::@3 b3: - //SEG48 [30] (byte~) animate::$15 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) -- vbuaa=_deref_pbuc1 + //SEG42 [24] (byte~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuaa=_deref_pbuc1_plus_1 lda YPOS+2 - //SEG49 [31] (byte~) animate::$16 ← (byte~) animate::$15 + (byte/signed byte/word/signed word) 1 [ animate::$16 ] ( main:2::animate:9 [ animate::$16 ] ) -- vbuaa=vbuaa_plus_1 clc adc #1 - //SEG50 [32] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$16 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta YPOS+2 - //SEG51 [33] (byte~) animate::$17 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2 [ animate::$17 ] ( main:2::animate:9 [ animate::$17 ] ) -- vbuaa=_deref_pbuc1 - //SEG52 [34] if((byte~) animate::$17!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG44 [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$19 bne b4 - //SEG53 animate::@10 - //SEG54 [35] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG45 animate::@10 + //SEG46 [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta YPOS+2 - //SEG55 animate::@4 + //SEG47 animate::@4 b4: - //SEG56 [36] (byte~) animate::$20 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$20 ] ( main:2::animate:9 [ animate::$20 ] ) -- vbuxx=_deref_pbuc1 - ldx YPOS+3 - //SEG57 [37] (byte~) animate::$21 ← (byte~) animate::$20 - (byte/signed byte/word/signed word) 1 [ animate::$21 ] ( main:2::animate:9 [ animate::$21 ] ) -- vbuxx=vbuxx_minus_1 - dex - //SEG58 [38] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$21 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx - stx YPOS+3 - //SEG59 [39] (byte~) animate::$22 ← * (const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$22 ] ( main:2::animate:9 [ animate::$22 ] ) -- vbuaa=_deref_pbuc1 - txa - //SEG60 [40] if((byte~) animate::$22!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- vbuaa_neq_vbuc1_then_la1 + //SEG48 [28] (byte~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuaa=_deref_pbuc1_minus_1 + lda YPOS+3 + sec + sbc #1 + //SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + sta YPOS+3 + //SEG50 [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1 cmp #$ff bne breturn - //SEG61 animate::@11 - //SEG62 [41] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG51 animate::@11 + //SEG52 [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuc2 lda #$19 sta YPOS+3 - //SEG63 [42] (byte~) animate::$25 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$25 ] ( main:2::animate:9 [ animate::$25 ] ) -- vbuaa=_deref_pbuc1 + //SEG53 [32] (byte~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) -- vbuaa=_deref_pbuc1_plus_vbuc2 lda XPOS+3 - //SEG64 [43] (byte~) animate::$26 ← (byte~) animate::$25 + (byte/signed byte/word/signed word) 7 [ animate::$26 ] ( main:2::animate:9 [ animate::$26 ] ) -- vbuaa=vbuaa_plus_vbuc1 clc adc #7 - //SEG65 [44] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$26 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG54 [33] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$15 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta XPOS+3 - //SEG66 [45] (byte~) animate::$27 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$27 ] ( main:2::animate:9 [ animate::$27 ] ) -- vbuaa=_deref_pbuc1 - //SEG67 [46] if((byte~) animate::$27<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- vbuaa_lt_vbuc1_then_la1 + //SEG55 [34] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3)<(byte/signed byte/word/signed word) 40) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_lt_vbuc2_then_la1 cmp #$28 bcc breturn - //SEG68 animate::@12 - //SEG69 [47] (byte~) animate::$30 ← * (const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3 [ animate::$30 ] ( main:2::animate:9 [ animate::$30 ] ) -- vbuaa=_deref_pbuc1 - //SEG70 [48] (byte~) animate::$31 ← (byte~) animate::$30 - (byte/signed byte/word/signed word) 40 [ animate::$31 ] ( main:2::animate:9 [ animate::$31 ] ) -- vbuaa=vbuaa_minus_vbuc1 + //SEG56 animate::@12 + //SEG57 [35] (byte~) animate::$18 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 40 [ animate::$18 ] ( main:2::animate:9 [ animate::$18 ] ) -- vbuaa=_deref_pbuc1_minus_vbuc2 sec sbc #$28 - //SEG71 [49] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$31 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa + //SEG58 [36] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) ← (byte~) animate::$18 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa sta XPOS+3 - //SEG72 animate::@return + //SEG59 animate::@return breturn: - //SEG73 [50] return [ ] ( main:2::animate:9 [ ] ) + //SEG60 [37] return [ ] ( main:2::animate:9 [ ] ) rts } -//SEG74 render +//SEG61 render render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG75 [52] phi from render to render::@1 [phi:render->render::@1] - //SEG76 [52] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 + //SEG62 [39] phi from render to render::@1 [phi:render->render::@1] + //SEG63 [39] phi (byte*) render::colline#5 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- pbuz1=pbuc1 lda #COLORS sta colline+1 - //SEG77 [52] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 + //SEG64 [39] phi (byte) render::y#4 = (byte/signed byte/word/signed word) 0 [phi:render->render::@1#1] -- vbuz1=vbuc1 lda #0 sta y - //SEG78 [52] phi from render::@3 to render::@1 [phi:render::@3->render::@1] - //SEG79 [52] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy - //SEG80 [52] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy - //SEG81 render::@1 + //SEG65 [39] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG66 [39] phi (byte*) render::colline#5 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG67 [39] phi (byte) render::y#4 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy + //SEG68 render::@1 b1: - //SEG82 [53] phi from render::@1 to render::@2 [phi:render::@1->render::@2] - //SEG83 [53] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 + //SEG69 [40] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG70 [40] phi (byte) render::x#2 = (byte/signed byte/word/signed word) 0 [phi:render::@1->render::@2#0] -- vbuz1=vbuc1 lda #0 sta x - //SEG84 [53] phi from render::@5 to render::@2 [phi:render::@5->render::@2] - //SEG85 [53] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy - //SEG86 render::@2 + //SEG71 [40] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG72 [40] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy + //SEG73 render::@2 b2: - //SEG87 [54] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) + //SEG74 [41] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 ] ) // (byte) findcol::x#0 = (byte) render::x#2 // register copy zp ZP_BYTE:5 - //SEG88 [55] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) + //SEG75 [42] (byte) findcol::y#0 ← (byte) render::y#4 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 ] ) // (byte) findcol::y#0 = (byte) render::y#4 // register copy zp ZP_BYTE:2 - //SEG89 [56] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) - //SEG90 [66] phi from render::@2 to findcol [phi:render::@2->findcol] + //SEG76 [43] call findcol param-assignment [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + //SEG77 [53] phi from render::@2 to findcol [phi:render::@2->findcol] jsr findcol - //SEG91 [57] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) -- vbuaa=vbuyy + //SEG78 [44] (byte) findcol::return#0 ← (byte) findcol::return#2 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 findcol::return#0 ] ) -- vbuaa=vbuyy tya - //SEG92 render::@5 - //SEG93 [58] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) + //SEG79 render::@5 + //SEG80 [45] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 render::col#0 ] ) // (byte) render::col#0 = (byte) findcol::return#0 // register copy reg byte a - //SEG94 [59] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuaa + //SEG81 [46] *((byte*) render::colline#5 + (byte) render::x#2) ← (byte) render::col#0 [ render::y#4 render::colline#5 render::x#2 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#2 ] ) -- pbuz1_derefidx_vbuz2=vbuaa ldy x sta (colline),y - //SEG95 [60] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG82 [47] (byte) render::x#1 ← ++ (byte) render::x#2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1=_inc_vbuz1 inc x - //SEG96 [61] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG83 [48] if((byte) render::x#1!=(byte/signed byte/word/signed word) 40) goto render::@2 [ render::y#4 render::colline#5 render::x#1 ] ( main:2::render:7 [ render::y#4 render::colline#5 render::x#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda x cmp #$28 bne b2 - //SEG97 render::@3 - //SEG98 [62] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG84 render::@3 + //SEG85 [49] (byte*) render::colline#1 ← (byte*) render::colline#5 + (byte/signed byte/word/signed word) 40 [ render::y#4 render::colline#1 ] ( main:2::render:7 [ render::y#4 render::colline#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda colline clc adc #$28 @@ -9112,17 +8538,17 @@ render: { bcc !+ inc colline+1 !: - //SEG99 [63] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG86 [50] (byte) render::y#1 ← ++ (byte) render::y#4 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1=_inc_vbuz1 inc y - //SEG100 [64] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + //SEG87 [51] if((byte) render::y#1!=(byte/signed byte/word/signed word) 25) goto render::@1 [ render::y#1 render::colline#1 ] ( main:2::render:7 [ render::y#1 render::colline#1 ] ) -- vbuz1_neq_vbuc1_then_la1 lda y cmp #$19 bne b1 - //SEG101 render::@return - //SEG102 [65] return [ ] ( main:2::render:7 [ ] ) + //SEG88 render::@return + //SEG89 [52] return [ ] ( main:2::render:7 [ ] ) rts } -//SEG103 findcol +//SEG90 findcol findcol: { .label x = 5 .label y = 2 @@ -9130,145 +8556,145 @@ findcol: { .label yp = 8 .label diff = 7 .label mindiff = 6 - //SEG104 [67] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] - //SEG105 [67] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuyy=vbuc1 + //SEG91 [54] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG92 [54] phi (byte) findcol::mincol#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#0] -- vbuyy=vbuc1 ldy #0 - //SEG106 [67] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 + //SEG93 [54] phi (byte) findcol::mindiff#10 = (byte/word/signed word) 255 [phi:findcol->findcol::@1#1] -- vbuz1=vbuc1 lda #$ff sta mindiff - //SEG107 [67] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- vbuxx=vbuc1 + //SEG94 [54] phi (byte) findcol::i#10 = (byte/signed byte/word/signed word) 0 [phi:findcol->findcol::@1#2] -- vbuxx=vbuc1 ldx #0 - //SEG108 findcol::@1 + //SEG95 findcol::@1 b1: - //SEG109 [68] (byte) findcol::xp#0 ← (const byte[]) XPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG96 [55] (byte) findcol::xp#0 ← *((const byte[]) XPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx lda XPOS,x sta xp - //SEG110 [69] (byte) findcol::yp#0 ← (const byte[]) YPOS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx + //SEG97 [56] (byte) findcol::yp#0 ← *((const byte[]) YPOS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1=pbuc1_derefidx_vbuxx lda YPOS,x sta yp - //SEG111 [70] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG98 [57] if((byte) findcol::x#0!=(byte) findcol::xp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 lda x cmp xp bne b2 - //SEG112 findcol::@9 - //SEG113 [71] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 + //SEG99 findcol::@9 + //SEG100 [58] if((byte) findcol::y#0!=(byte) findcol::yp#0) goto findcol::@2 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_neq_vbuz2_then_la1 lda y cmp yp bne b2 - //SEG114 [72] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] - //SEG115 [72] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- vbuyy=vbuc1 + //SEG101 [59] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG102 [59] phi (byte) findcol::return#2 = (byte/signed byte/word/signed word) 0 [phi:findcol::@9->findcol::@return#0] -- vbuyy=vbuc1 ldy #0 - //SEG116 findcol::@return + //SEG103 findcol::@return breturn: - //SEG117 [73] return [ findcol::return#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) + //SEG104 [60] return [ findcol::return#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::return#2 ] ) rts - //SEG118 findcol::@2 + //SEG105 findcol::@2 b2: - //SEG119 [74] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG106 [61] if((byte) findcol::x#0>=(byte) findcol::xp#0) goto findcol::@4 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::xp#0 findcol::yp#0 ] ) -- vbuz1_ge_vbuz2_then_la1 lda x cmp xp bcs b4 - //SEG120 findcol::@12 - //SEG121 [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) -- vbuz1=vbuz1_minus_vbuz2 + //SEG107 findcol::@12 + //SEG108 [62] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#1 ] ) -- vbuz1=vbuz1_minus_vbuz2 lda diff sec sbc x sta diff - //SEG122 [76] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] - //SEG123 [76] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy - //SEG124 findcol::@5 + //SEG109 [63] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG110 [63] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy + //SEG111 findcol::@5 b5: - //SEG125 [77] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) -- vbuz1_ge_vbuz2_then_la1 + //SEG112 [64] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#4 ] ) -- vbuz1_ge_vbuz2_then_la1 lda y cmp yp bcs b6 - //SEG126 findcol::@14 - //SEG127 [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) -- vbuaa=vbuz1_minus_vbuz2 + //SEG113 findcol::@14 + //SEG114 [65] (byte~) findcol::$10 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$10 ] ) -- vbuaa=vbuz1_minus_vbuz2 lda yp sec sbc y - //SEG128 [79] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) -- vbuaa=vbuz1_plus_vbuaa + //SEG115 [66] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#3 ] ) -- vbuaa=vbuz1_plus_vbuaa clc adc diff - //SEG129 [80] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] - //SEG130 [80] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy - //SEG131 findcol::@7 + //SEG116 [67] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG117 [67] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy + //SEG118 findcol::@7 b7: - //SEG132 [81] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) -- vbuaa_ge_vbuz1_then_la1 + //SEG119 [68] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#6 ] ) -- vbuaa_ge_vbuz1_then_la1 cmp mindiff bcs b21 - //SEG133 findcol::@16 - //SEG134 [82] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) -- vbuyy=pbuc1_derefidx_vbuxx + //SEG120 findcol::@16 + //SEG121 [69] (byte) findcol::mincol#1 ← *((const byte[]) COLS#0 + (byte) findcol::i#10) [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::diff#6 findcol::mincol#1 ] ) -- vbuyy=pbuc1_derefidx_vbuxx ldy COLS,x - //SEG135 [83] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] - //SEG136 [83] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy - //SEG137 [83] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy - //SEG138 findcol::@8 + //SEG122 [70] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG123 [70] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG124 [70] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy + //SEG125 findcol::@8 b8: - //SEG139 [84] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx=_inc_vbuxx + //SEG126 [71] (byte) findcol::i#1 ← ++ (byte) findcol::i#10 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx=_inc_vbuxx inx - //SEG140 [85] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG127 [72] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #numpoints bcc b19 - //SEG141 [72] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] - //SEG142 [72] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy + //SEG128 [59] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG129 [59] phi (byte) findcol::return#2 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn - //SEG143 findcol::@19 + //SEG130 findcol::@19 b19: - //SEG144 [86] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) -- vbuz1=vbuaa + //SEG131 [73] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] ) -- vbuz1=vbuaa sta mindiff - //SEG145 [67] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] - //SEG146 [67] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy - //SEG147 [67] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy - //SEG148 [67] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy + //SEG132 [54] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG133 [54] phi (byte) findcol::mincol#10 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG134 [54] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG135 [54] phi (byte) findcol::i#10 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 - //SEG149 findcol::@21 + //SEG136 findcol::@21 b21: - //SEG150 [87] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1 + //SEG137 [74] (byte~) findcol::mindiff#15 ← (byte) findcol::mindiff#10 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mincol#10 findcol::mindiff#15 ] ) -- vbuaa=vbuz1 lda mindiff jmp b8 - //SEG151 findcol::@6 + //SEG138 findcol::@6 b6: - //SEG152 [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$14 ] ) -- vbuaa=vbuz1_minus_vbuz2 + //SEG139 [75] (byte~) findcol::$12 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#4 findcol::$12 ] ) -- vbuaa=vbuz1_minus_vbuz2 lda y sec sbc yp - //SEG153 [89] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) -- vbuaa=vbuz1_plus_vbuaa + //SEG140 [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::diff#2 ] ) -- vbuaa=vbuz1_plus_vbuaa clc adc diff jmp b7 - //SEG154 findcol::@4 + //SEG141 findcol::@4 b4: - //SEG155 [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:56 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) -- vbuz1=vbuz2_minus_vbuz1 + //SEG142 [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) -- vbuz1=vbuz2_minus_vbuz1 lda x sec sbc diff sta diff jmp b5 } -//SEG156 initscreen +//SEG143 initscreen initscreen: { .label screen = 3 - //SEG157 [92] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] - //SEG158 [92] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 + //SEG144 [79] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG145 [79] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta screen+1 - //SEG159 [92] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] - //SEG160 [92] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy - //SEG161 initscreen::@1 + //SEG146 [79] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG147 [79] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy + //SEG148 initscreen::@1 b1: - //SEG162 [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG149 [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) -- _deref_pbuz1=vbuc1 ldy #0 lda #FILL sta (screen),y - //SEG163 [94] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1 + //SEG150 [81] (byte*) initscreen::screen#1 ← ++ (byte*) initscreen::screen#2 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1=_inc_pbuz1 inc screen bne !+ inc screen+1 !: - //SEG164 [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1_lt_pbuc1_then_la1 + //SEG151 [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) -- pbuz1_lt_pbuc1_then_la1 lda screen+1 cmp #>SCREEN+$3e8 bcc b1 @@ -9277,8 +8703,8 @@ initscreen: { cmp #