1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-26 03:32:23 +00:00

Implemented more proper pointer handling by wrapping any unary *'s into PointerDerefs.

This commit is contained in:
jespergravgaard 2017-11-13 00:47:05 +01:00
parent 1b999c8c1d
commit de5f92498d
41 changed files with 8924 additions and 9070 deletions

View File

@ -1,5 +1,4 @@
Known Problems
- (incd020.kc) Increment/decrement of value pointed to by pointer does not work. eg. byte* BGCOL = $d020; (*BGCOL)++;
- (inlinearrayproblem.kc) Arrays / strings allocated inline destroy functions (because they are allocated where the call enters.
- (forincrementassign.kc) Classic for() does not allow assignment as increment, eg. for(byte i=0;i<25;i=i+2) {}
- (forrangesymbolic.kc) Range-based for does not recognize symbolic constants. The following gives a ParseTreeConstantEvaluator$NotConstantException - const byte* BITMAP = $2000; for(byte* b : BITMAP..BITMAP+$2000) { *b = 0; }
@ -11,15 +10,10 @@ Features
- Improve locality of block sequence for if(cond) { stmt1; } else { stmt2; } to if(!cond) goto @else stmt1; jmp @end; @else: stmt2; @end:
- Optimize if/else by swapping if & else if cond is easier to evaluate than !cond.
- Let { stmt } and for() {} introduce a new anonymous scope. (But not when optimizing)
- Add preprocessing / find a way to allow some functions to run at compile time. This will always be to initialize memory to a certain state.
- Syntax: A preprocess keyword usable before initializers or global statements blocks? (maybe compiletime is a better word as it is not a preprocessor in the C-sense of the word)
- byte[$100] sins = preprocess { [x] = sin(2.0*PI*x/$100) };
- byte[$100] sins; preprocess { for(byte x : 0 $ff) { sins[x] = sin(2.0*PI*x/$100)}};
- Implement inline compilation of functions (and a mechanism for choosing which methods / calls to inline)
- Handle long branches
- Optimize loops by unrolling them somewhat
- Optimize loops with Strength reduction (https://en.wikipedia.org/wiki/Strength_reduction)
- Support calculated pointers eg. *(ptr+i)
- Add syntax for encoded chars (eg. PETSCII instead of SCREEN)
Syntax Checking
@ -33,9 +27,23 @@ New language Features
- Add Fixed Point number types fixed[8.8], fixed[16.8] - maybe even fixed[24.4]
- Add structs
Pointers
- Support calculated pointers eg. *(ptr+i)
- Use a rule-based approach should de-inline most pointer derefs again just before register allocation. ( *a = *b + *c => $1=*b (reg a), $2=*c (alu), $3=$1+$2 (reg a), *a = $3 - but *a=*a+const should stay inlined as it has efficient ASM)
- Change pointer derefs ASM signature to _deref_xxx (from _star_xxx)
- VariableReplacer, GraphReplacer, Pass1GenerateSSA#versionAllUses() has a pretty ugly handling of pointers. Abstract prettier code.
- AsmFragmentManager only handles _neq_ pointer comparison. Abstract a better replacer and handle the rest.
- Consider if array-indexing should be handled in the same way as unary * when generating statements (put into inline Pointers instead of temporary variables.) This will fix a[2]++, which probably does not work atm.
Compiletime (Preprocessing)
- Add preprocessing / find a way to allow some functions to run at compile time. This will always be to initialize memory to a certain state.
- Syntax: A compiletime keyword usable before initializers or global statements blocks? (compiletime is a better word as it is not a preprocessor in the C-sense of the word)
- byte[$100] sins = compiletime { [x] = sin(2.0*PI*x/$100) };
- byte[$100] sins; compiletime { for(byte x : 0 $ff) { sins[x] = sin(2.0*PI*x/$100)}};
Imports
- Remove unused functions & symbols.
- Add imports
- Remove unused functions.
- Add an export keyword ensuring that a function is generated even if it is never called. Maybe export can be handled by generating a call that can be used as stub.
Constants
@ -198,3 +206,6 @@ Done
+ Support ASM syntax check etc.
+ Also perform ASM clobber analysis when assigning registers.
+ Move the main code into a main() function. The main function per default has no parameters and exits with RTS.
+ (incd020.kc) Increment/decrement of value pointed to by pointer does not work. eg. byte* BGCOL = $d020; (*BGCOL)++;
+ All pointer derefs *ptr should per default be inlined as rValues/lValues in early passes (PointerDereference).
+ Alternatively: Selectively inline some pointer derefs that can be optimized in ASM

View File

@ -126,6 +126,14 @@ public class AsmFragmentManager {
return result;
}
}
if (signature.startsWith("_star_cowo1_neq_") && !signature.contains("aby")) {
String subSignature = "aby_neq_" + signature.substring(16).replace("cowo2", "cowo1").replace("cowo3", "cowo2").replace("coby2", "coby1").replace("coby3", "coby2");
CharStream subCharStream = loadOrSynthesizeFragment(subSignature);
if (subCharStream != null) {
CharStream result = CharStreams.fromString("lda {cowo1}\n"+subCharStream.toString().replace("cowo2", "cowo3").replace("cowo1", "cowo2").replace("coby2", "coby3").replace("coby1", "coby2"));
return result;
}
}
if (signature.contains("=zpby1_") && !signature.matches(".*=.*aby.*")) {
String subSignature = regexpRewriteSignature(signature, "(.*)=zpby1_(.*)", "$1=aby_$2").replace("zpby2", "zpby1").replace("zpby3", "zpby2");
CharStream subCharStream = loadOrSynthesizeFragment(subSignature);
@ -150,6 +158,22 @@ public class AsmFragmentManager {
return result;
}
}
if (signature.contains("=_star_cowo1") && !signature.matches(".*=.*aby.*")) {
String subSignature = regexpRewriteSignature(signature, "(.*)=_star_cowo1_(.*)", "$1=aby_$2").replace("cowo2", "cowo1").replace("cowo3", "cowo2").replace("coby2", "coby1").replace("coby3", "coby2");
CharStream subCharStream = loadOrSynthesizeFragment(subSignature);
if (subCharStream != null) {
CharStream result = CharStreams.fromString("lda {cowo1}\n"+subCharStream.toString().replace("cowo2", "cowo3").replace("cowo1", "cowo2").replace("coby2", "coby3").replace("coby1", "coby2"));
return result;
}
}
if (signature.contains("=_star_zpptrby1") && !signature.matches(".*=.*aby.*")&& !signature.matches(".*=.*yby.*")) {
String subSignature = regexpRewriteSignature(signature, "(.*)=_star_zpptrby1_(.*)", "$1=aby_$2").replace("zpptrby2", "zpptrby1").replace("zpptrby3", "zpptrby2");
CharStream subCharStream = loadOrSynthesizeFragment(subSignature);
if (subCharStream != null) {
CharStream result = CharStreams.fromString("ldy #0\n"+"lda ({zpptrby1}),y\n"+subCharStream.toString().replace("zpptrby2", "zpptrby3").replace("zpptrby1", "zpptrby2"));
return result;
}
}
if (signature.endsWith("_staridx_aby") && !signature.matches(".*=.*yby.*")) {
String subSignature = regexpRewriteSignature(signature, "(.*)=(.*)_staridx_aby", "$1=$2_staridx_yby");
CharStream subCharStream = loadOrSynthesizeFragment(subSignature);

View File

@ -309,6 +309,16 @@ public class AsmFragmentSignature {
} else if (value instanceof ConstantVar) {
ConstantVar constantVar = (ConstantVar) value;
SymbolType constType = constantVar.getType();
// Find value if it is already bound
for (String name : bindings.keySet()) {
Value bound = bindings.get(name);
if (bound instanceof ConstantVar) {
if (bound.equals(value))
return name;
}
}
if (SymbolTypeBasic.BYTE.equals(constType)) {
String name = "coby" + nextConstByteIdx++;
bindings.put(name, constantVar);

View File

@ -0,0 +1 @@
dec {cowo1}

View File

@ -0,0 +1 @@
inc {cowo1}

View File

@ -136,6 +136,13 @@ public class SymbolTypeInference {
SymbolType leftType = inferType(programScope, constBin.getLeft());
SymbolType rightType = inferType(programScope, constBin.getRight());
return inferType(leftType, constBin.getOperator(), rightType);
} else if(rValue instanceof PointerDereferenceSimple) {
SymbolType pointerType = inferType(programScope, ((PointerDereferenceSimple) rValue).getPointer());
if(pointerType instanceof SymbolTypePointer) {
return ((SymbolTypePointer) pointerType).getElementType();
} else {
throw new RuntimeException("Cannot infer pointer element type from pointer type "+pointerType);
}
}
if (type == null) {
throw new RuntimeException("Cannot infer type for " + rValue);

View File

@ -46,7 +46,7 @@ public class Pass1GenerateSingleStaticAssignmentForm {
if (lValue instanceof VariableRef) {
VariableRef lValueRef = (VariableRef) lValue;
Variable assignedVar = symbols.getVariable(lValueRef);
if(assignedVar instanceof VariableUnversioned) {
if (assignedVar instanceof VariableUnversioned) {
// Assignment to a non-versioned non-intermediary variable
VariableUnversioned assignedSymbol = (VariableUnversioned) assignedVar;
VariableVersion version = assignedSymbol.createVersion();
@ -68,25 +68,45 @@ public class Pass1GenerateSingleStaticAssignmentForm {
// New phi functions introduced in the block to create versions of variables.
Map<VariableUnversioned, VariableVersion> blockNewPhis = new LinkedHashMap<>();
for (Statement statement : block.getStatements()) {
if(statement instanceof StatementReturn) {
if (statement instanceof StatementReturn) {
StatementReturn statementReturn = (StatementReturn) statement;
{
if (statementReturn.getValue() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) ((StatementReturn) statement).getValue();
RValue pointer = deref.getPointer();
VariableVersion version = findOrCreateVersion(pointer, blockVersions, blockNewPhis);
if (version != null) {
deref.setPointer(version.getRef());
}
} else {
VariableVersion version = findOrCreateVersion(statementReturn.getValue(), blockVersions, blockNewPhis);
if (version != null) {
statementReturn.setValue(version.getRef());
}
}
}
if (statement instanceof StatementAssignment) {
StatementAssignment assignment = (StatementAssignment) statement;
{
if (assignment.getrValue1() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) ((StatementAssignment) statement).getrValue1();
RValue pointer = deref.getPointer();
VariableVersion version = findOrCreateVersion(pointer, blockVersions, blockNewPhis);
if (version != null) {
deref.setPointer(version.getRef());
}
} else {
VariableVersion version = findOrCreateVersion(assignment.getrValue1(), blockVersions, blockNewPhis);
if (version != null) {
assignment.setrValue1(version.getRef());
}
}
{
if (assignment.getrValue2() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) ((StatementAssignment) statement).getrValue2();
RValue pointer = deref.getPointer();
VariableVersion version = findOrCreateVersion(pointer, blockVersions, blockNewPhis);
if (version != null) {
deref.setPointer(version.getRef());
}
} else {
VariableVersion version = findOrCreateVersion(assignment.getrValue2(), blockVersions, blockNewPhis);
if (version != null) {
assignment.setrValue2(version.getRef());
@ -97,18 +117,18 @@ public class Pass1GenerateSingleStaticAssignmentForm {
if (lValue instanceof VariableRef) {
VariableRef lValueRef = (VariableRef) lValue;
Variable variable = symbols.getVariable(lValueRef);
if(variable instanceof VariableVersion) {
if (variable instanceof VariableVersion) {
VariableVersion versioned = (VariableVersion) variable;
blockVersions.put(versioned.getVersionOf(), versioned);
}
} else if(lValue instanceof PointerDereferenceSimple) {
} else if (lValue instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) lValue;
RValue pointer = deref.getPointer();
VariableVersion version = findOrCreateVersion(pointer, blockVersions, blockNewPhis);
if (version != null) {
deref.setPointer(version.getRef());
}
} else if(lValue instanceof PointerDereferenceIndexed) {
} else if (lValue instanceof PointerDereferenceIndexed) {
PointerDereferenceIndexed deref = (PointerDereferenceIndexed) lValue;
RValue pointer = deref.getPointer();
VariableVersion version = findOrCreateVersion(pointer, blockVersions, blockNewPhis);
@ -179,7 +199,7 @@ public class Pass1GenerateSingleStaticAssignmentForm {
if (statement instanceof StatementPhiBlock) {
StatementPhiBlock phiBlock = (StatementPhiBlock) statement;
for (StatementPhiBlock.PhiVariable phiVariable : phiBlock.getPhiVariables()) {
if(phiVariable.isEmpty()) {
if (phiVariable.isEmpty()) {
VariableRef phiLValVarRef = phiVariable.getVariable();
VariableVersion versioned = (VariableVersion) symbols.getVariable(phiLValVarRef);
VariableUnversioned unversioned = versioned.getVersionOf();
@ -235,7 +255,7 @@ public class Pass1GenerateSingleStaticAssignmentForm {
if (statement instanceof StatementLValue) {
StatementLValue assignment = (StatementLValue) statement;
addSymbolToMap(symbolMap, block, assignment.getlValue());
} else if(statement instanceof StatementPhiBlock) {
} else if (statement instanceof StatementPhiBlock) {
StatementPhiBlock phiBlock = (StatementPhiBlock) statement;
for (StatementPhiBlock.PhiVariable phiVariable : phiBlock.getPhiVariables()) {
addSymbolToMap(symbolMap, block, phiVariable.getVariable());
@ -247,7 +267,7 @@ public class Pass1GenerateSingleStaticAssignmentForm {
}
private void addSymbolToMap(Map<LabelRef, Map<VariableUnversioned, VariableVersion>> symbolMap, ControlFlowBlock block, LValue lValue) {
if(lValue instanceof VariableRef) {
if (lValue instanceof VariableRef) {
Variable lValueVar = symbols.getVariable((VariableRef) lValue);
if (lValueVar instanceof VariableVersion) {
VariableVersion versioned = (VariableVersion) lValueVar;

View File

@ -544,11 +544,15 @@ public class Pass1GenerateStatementSequence extends KickCBaseVisitor<Object> {
RValue child = (RValue) this.visit(ctx.expr());
String op = ((TerminalNode) ctx.getChild(0)).getSymbol().getText();
Operator operator = Operator.getUnary(op);
VariableIntermediate tmpVar = getCurrentSymbols().addVariableIntermediate();
VariableRef tmpVarRef = tmpVar.getRef();
Statement stmt = new StatementAssignment(tmpVarRef, operator, child);
sequence.addStatement(stmt);
return tmpVarRef;
if(Operator.STAR.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;
}
}
@Override

View File

@ -220,7 +220,10 @@ public abstract class Pass2SsaOptimization {
usage = usage + 1;
usages.put(var, usage);
} else if(rVal instanceof PointerDereference) {
throw new RuntimeException("Unexpected pointer dereference!");
Value pointer = ((PointerDereference) rVal).getPointer();
if(pointer instanceof RValue) {
addUsage((RValue) pointer);
}
}
}

View File

@ -89,9 +89,25 @@ public class VariableReplacer {
}
if (getReplacement(assignment.getrValue1()) != null) {
assignment.setrValue1(getReplacement(assignment.getrValue1()));
} else {
if(assignment.getrValue1() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) assignment.getrValue1();
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
if (getReplacement(assignment.getrValue2()) != null) {
assignment.setrValue2(getReplacement(assignment.getrValue2()));
} else {
if(assignment.getrValue2() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) assignment.getrValue2();
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
// Handle pointer dereference in LValue
if (lValue instanceof PointerDereferenceSimple) {
@ -111,6 +127,8 @@ public class VariableReplacer {
deref.setIndex(getReplacement(index));
}
}
// Handle pointer dereference in RValue
return null;
}
@ -118,9 +136,25 @@ public class VariableReplacer {
public Void visitConditionalJump(StatementConditionalJump conditionalJump) {
if (getReplacement(conditionalJump.getrValue1()) != null) {
conditionalJump.setrValue1(getReplacement(conditionalJump.getrValue1()));
} else {
if (conditionalJump.getrValue1() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) conditionalJump.getrValue1();
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
if (getReplacement(conditionalJump.getrValue2()) != null) {
conditionalJump.setrValue2(getReplacement(conditionalJump.getrValue2()));
} else {
if (conditionalJump.getrValue2() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) conditionalJump.getrValue2();
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
return null;
}
@ -129,6 +163,14 @@ public class VariableReplacer {
public Void visitReturn(StatementReturn aReturn) {
if (getReplacement(aReturn.getValue()) != null) {
aReturn.setValue(getReplacement(aReturn.getValue()));
} else {
if (aReturn.getValue() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) aReturn.getValue();
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
return null;
}
@ -141,6 +183,14 @@ public class VariableReplacer {
RValue newParam = parameter;
if (getReplacement(parameter) != null) {
newParam = getReplacement(parameter);
} else {
if (parameter instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) parameter;
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
newParams.add(newParam);
}
@ -169,6 +219,14 @@ public class VariableReplacer {
} else {
phirValue.setrValue(alias);
}
} else {
if(phirValue.getrValue() instanceof PointerDereferenceSimple) {
PointerDereferenceSimple deref = (PointerDereferenceSimple) phirValue.getrValue();
RValue pointer = deref.getPointer();
if (getReplacement(pointer) != null) {
deref.setPointer(getReplacement(pointer));
}
}
}
}
}

View File

@ -28,11 +28,6 @@ public class TestErrors extends TestCase {
compileAndCompare("inline-asm-param");
}
public void testIncD020() throws IOException, URISyntaxException {
compileAndCompare("incd020");
}
public void testUseUninitialized() throws IOException, URISyntaxException {
String filename = "useuninitialized";
compileAndCompare(filename);

View File

@ -24,6 +24,10 @@ public class TestPrograms extends TestCase {
helper = new ReferenceHelper("dk/camelot64/kickc/test/ref/");
}
public void testIncD020() throws IOException, URISyntaxException {
compileAndCompare("incd020");
}
public void testOverlapAllocation2() throws IOException, URISyntaxException {
compileAndCompare("overlap-allocation-2");
}

View File

@ -5,6 +5,6 @@ byte* BGCOL = $d020;
void main() {
do {
++*BGCOL;
(*BGCOL)++;
} while (true)
(*BGCOL)--;
} while (true);
}

View File

@ -242,7 +242,6 @@ line_ydxi: {
rts
}
plot: {
.label _5 = $a
.label plotter_x = 8
.label plotter_y = $b
.label plotter = 8
@ -267,9 +266,7 @@ plot: {
sta plotter+1
ldy #0
lda (plotter),y
sta _5
lda plot_bit,x
ora _5
ora plot_bit,x
sta (plotter),y
rts
}

View File

@ -174,185 +174,184 @@ line_ydxi::@return: scope:[line_ydxi] from line_ydxi::@2
[100] return [ ] ( main:0::lines:7::line:20::line_ydxi:41 [ lines::l#2 ] main:0::lines:7::line:20::line_ydxi:85 [ lines::l#2 ] )
to:@return
plot: scope:[plot] from line_xdyd::@1 line_xdyi::@1 line_ydxd::@1 line_ydxi::@1
[101] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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 ] )
[101] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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 ] )
[103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#1 ] )
[104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#1 plot::$1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#1 plot::$1 ] )
[105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#2 ] )
[106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::$2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#2 plot::$2 ] )
[107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#2 plot::plotter_y#1 ] )
[108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#2 plot::plotter_y#1 plot::$3 ] )
[109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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#2 plot::plotter_y#2 ] )
[110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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 ← * (byte*) plot::plotter#0 [ plot::x#4 plot::plotter#0 plot::$5 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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 plot::$5 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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 plot::$5 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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 plot::$5 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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 plot::$5 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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 plot::$5 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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 plot::$5 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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 plot::$5 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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 plot::$5 ] )
[112] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#4 [ plot::plotter#0 plot::$5 plot::$6 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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 plot::$6 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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 plot::$6 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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 plot::$6 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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 plot::$6 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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 plot::$6 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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 plot::$6 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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 plot::$6 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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 plot::$6 ] )
[113] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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::$7 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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::$7 ] main:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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::$7 ] main:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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::$7 ] main:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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::$7 ] main:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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::$7 ] main:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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::$7 ] main:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 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::$7 ] )
[114] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] )
[101] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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 ] )
[101] (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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::$0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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 ] )
[103] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#4 plot::y#4 plot::plotter_x#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#1 ] main:0::lines:7::line:20::line_xdyi:34::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#1 ] main:0::lines:7::line:20::line_xdyi:79::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#1 ] main:0::lines:7::line:20::line_ydxd:55::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#1 ] main:0::lines:7::line:20::line_ydxd:71::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#1 ] main:0::lines:7::line:20::line_xdyd:49::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#1 ] main:0::lines:7::line:20::line_xdyd:65::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#1 ] )
[104] (byte~) plot::$1 ← (const byte[]) plot_xlo#0 *idx (byte) plot::x#4 [ plot::x#4 plot::y#4 plot::plotter_x#1 plot::$1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#1 plot::$1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:34::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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyi:79::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#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:55::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#1 plot::$1 ] main:0::lines:7::line:20::line_ydxd:71::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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:49::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#1 plot::$1 ] main:0::lines:7::line:20::line_xdyd:65::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#1 plot::$1 ] )
[105] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$1 [ plot::x#4 plot::y#4 plot::plotter_x#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 ] main:0::lines:7::line:20::line_xdyi:34::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#2 ] main:0::lines:7::line:20::line_xdyi:79::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#2 ] main:0::lines:7::line:20::line_ydxd:55::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#2 ] main:0::lines:7::line:20::line_ydxd:71::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#2 ] main:0::lines:7::line:20::line_xdyd:49::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#2 ] main:0::lines:7::line:20::line_xdyd:65::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#2 ] )
[106] (byte~) plot::$2 ← (const byte[]) plot_yhi#0 *idx (byte) plot::y#4 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::$2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::$2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:34::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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyi:79::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#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:55::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#2 plot::$2 ] main:0::lines:7::line:20::line_ydxd:71::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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:49::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#2 plot::$2 ] main:0::lines:7::line:20::line_xdyd:65::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#2 plot::$2 ] )
[107] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#4 plot::y#4 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:34::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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyi:79::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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:55::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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_ydxd:71::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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:49::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#2 plot::plotter_y#1 ] main:0::lines:7::line:20::line_xdyd:65::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#2 plot::plotter_y#1 ] )
[108] (byte~) plot::$3 ← (const byte[]) plot_ylo#0 *idx (byte) plot::y#4 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyi:34::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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyi:79::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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxd:55::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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_ydxd:71::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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyd:49::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#2 plot::plotter_y#1 plot::$3 ] main:0::lines:7::line:20::line_xdyd:65::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#2 plot::plotter_y#1 plot::$3 ] )
[109] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#4 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:34::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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyi:79::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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:55::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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_ydxd:71::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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:49::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#2 plot::plotter_y#2 ] main:0::lines:7::line:20::line_xdyd:65::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#2 plot::plotter_y#2 ] )
[110] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#4 plot::plotter#0 ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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 ] )
to:plot::@return
plot::@return: scope:[plot] from plot
[115] return [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79::plot:121 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71::plot:136 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49::plot:151 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65::plot:151 [ lines::l#2 line_xdyd::yd#2 line_xdyd::xd#5 line_xdyd::x1#6 line_xdyd::x#3 line_xdyd::y#3 line_xdyd::e#3 ] )
[114] return [ ] ( main:0::lines:7::line:20::line_ydxi:41::plot:91 [ 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:0::lines:7::line:20::line_ydxi:85::plot:91 [ 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:0::lines:7::line:20::line_xdyi:34::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:0::lines:7::line:20::line_xdyi:79::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:0::lines:7::line:20::line_ydxd:55::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:0::lines:7::line:20::line_ydxd:71::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:0::lines:7::line:20::line_xdyd:49::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:0::lines:7::line:20::line_xdyd:65::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 ] )
to:@return
line_xdyi: scope:[line_xdyi] from line::@17 line::@27
[116] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] )
[117] (byte) line_xdyi::e#0 ← (byte) line_xdyi::yd#2 >> (byte) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 line_xdyi::yd#2 line_xdyi::x#6 line_xdyi::y#5 line_xdyi::xd#5 line_xdyi::x1#6 ] main:0::lines:7::line:20::line_xdyi:79 [ 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) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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
[118] (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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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) 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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) 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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::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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[120] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[121] 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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::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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 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:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 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
[122] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[123] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[124] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[121] (byte) line_xdyi::x#2 ← (byte) line_xdyi::x#3 + (byte) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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
[125] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[126] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[124] (byte) line_xdyi::y#2 ← (byte) line_xdyi::y#3 + (byte) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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
[127] (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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[128] (byte~) line_xdyi::$8 ← (byte) line_xdyi::x1#6 + (byte) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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 ] )
[129] 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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::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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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) 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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:0::lines:7::line:20::line_xdyi:34 [ 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:0::lines:7::line:20::line_xdyi:79 [ 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
[130] return [ ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 ] )
[129] return [ ] ( main:0::lines:7::line:20::line_xdyi:34 [ lines::l#2 ] main:0::lines:7::line:20::line_xdyi:79 [ lines::l#2 ] )
to:@return
line_ydxd: scope:[line_ydxd] from line::@10 line::@6
[131] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] )
[132] (byte) line_ydxd::e#0 ← (byte) line_ydxd::xd#2 >> (byte) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 line_ydxd::xd#2 line_ydxd::x#5 line_ydxd::y#6 line_ydxd::yd#5 line_ydxd::y1#6 ] main:0::lines:7::line:20::line_ydxd:71 [ 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) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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
[133] (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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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) 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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) 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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::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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[135] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[136] 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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::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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 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:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 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
[137] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[138] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[139] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[136] (byte) line_ydxd::y#2 ← (byte) line_ydxd::y#3 + (byte) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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
[140] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[141] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[139] (byte) line_ydxd::x#2 ← (byte) line_ydxd::x#3 - (byte) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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
[142] (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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[143] (byte~) line_ydxd::$8 ← (byte) line_ydxd::y1#6 + (byte) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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 ] )
[144] 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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::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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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) 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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:0::lines:7::line:20::line_ydxd:55 [ 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:0::lines:7::line:20::line_ydxd:71 [ 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
[145] return [ ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 ] )
[144] return [ ] ( main:0::lines:7::line:20::line_ydxd:55 [ lines::l#2 ] main:0::lines:7::line:20::line_ydxd:71 [ lines::l#2 ] )
to:@return
line_xdyd: scope:[line_xdyd] from line::@20 line::@24
[146] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] )
[147] (byte) line_xdyd::e#0 ← (byte) line_xdyd::yd#2 >> (byte) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 line_xdyd::yd#2 line_xdyd::x#6 line_xdyd::y#5 line_xdyd::xd#5 line_xdyd::x1#6 ] main:0::lines:7::line:20::line_xdyd:65 [ 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) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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
[148] (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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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) 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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) 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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::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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[150] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[151] 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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::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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 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:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 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
[152] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[153] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[154] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[151] (byte) line_xdyd::x#2 ← (byte) line_xdyd::x#3 + (byte) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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
[155] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[156] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[154] (byte) line_xdyd::y#2 ← (byte) line_xdyd::y#3 - (byte) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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
[157] (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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[158] (byte~) line_xdyd::$8 ← (byte) line_xdyd::x1#6 + (byte) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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 ] )
[159] 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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::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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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) 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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:0::lines:7::line:20::line_xdyd:49 [ 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:0::lines:7::line:20::line_xdyd:65 [ 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
[160] return [ ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 ] )
[159] return [ ] ( main:0::lines:7::line:20::line_xdyd:49 [ lines::l#2 ] main:0::lines:7::line:20::line_xdyd:65 [ lines::l#2 ] )
to:@return
init_plot_tables: scope:[init_plot_tables] from main::@3
[161] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
[160] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
[162] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[162] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[163] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
[164] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[165] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[166] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[167] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[168] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
[161] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[161] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[162] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[166] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[167] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
to:init_plot_tables::@2
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
[169] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
[170] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[171] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[168] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[170] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ 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
[172] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[172] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[173] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
[174] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
[175] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
[176] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[177] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
[178] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[179] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
[180] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[171] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ 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) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[172] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[178] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
[179] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ 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
[181] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
[180] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ 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
[182] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
[183] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[184] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[183] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ 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
[185] return [ ] ( main:0::init_plot_tables:6 [ ] )
[184] return [ ] ( main:0::init_plot_tables:6 [ ] )
to:@return
init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1
to:init_plot_tables::@2
init_screen: scope:[init_screen] from main
[186] phi() [ ] ( main:0::init_screen:5 [ ] )
[185] phi() [ ] ( main:0::init_screen:5 [ ] )
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:0::init_screen:5 [ init_screen::b#2 ] )
[188] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
[189] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
[190] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
[186] (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:0::init_screen:5 [ init_screen::b#2 ] )
[187] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
[188] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
[189] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ 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:0::init_screen:5 [ init_screen::c#2 ] )
[192] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
[193] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
[194] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
[190] (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:0::init_screen:5 [ init_screen::c#2 ] )
[191] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
[192] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
[193] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
to:init_screen::@return
init_screen::@return: scope:[init_screen] from init_screen::@2
[195] return [ ] ( main:0::init_screen:5 [ ] )
[194] return [ ] ( main:0::init_screen:5 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -282,12 +282,11 @@
(byte~) plot::$1 reg byte a 4.0
(byte~) plot::$2 reg byte a 4.0
(byte~) plot::$3 reg byte a 4.0
(byte~) plot::$5 $5 zp ZP_BYTE:10 2.0
(byte~) plot::$5 reg byte alu 4.0
(byte~) plot::$6 reg byte a 4.0
(byte~) plot::$7 reg byte a 4.0
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter#0 plotter zp ZP_PTR_BYTE:8 1.5
(byte*) plot::plotter#0 plotter zp ZP_PTR_BYTE:8 1.3333333333333333
(byte*) plot::plotter_x
(byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:8 2.0
(byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:8 0.8
@ -299,7 +298,7 @@
(byte) plot::x#1 reg byte x 11.0
(byte) plot::x#2 reg byte x 11.0
(byte) plot::x#3 reg byte x 11.0
(byte) plot::x#4 reg byte x 4.545454545454545
(byte) plot::x#4 reg byte x 5.000000000000001
(byte) plot::y
(byte) plot::y#0 reg byte y 22.0
(byte) plot::y#1 reg byte y 22.0
@ -336,15 +335,15 @@ zp ZP_PTR_BYTE:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot
reg byte y [ lines::$0 ]
reg byte x [ lines::$5 ]
reg byte y [ line::y0#0 ]
zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 plot::$5 line_xdyi::$8 line_xdyd::$8 ]
zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$8 line_xdyd::$8 ]
reg byte a [ line_ydxi::$8 ]
reg byte a [ plot::$0 ]
reg byte a [ plot::$1 ]
reg byte a [ plot::$2 ]
zp ZP_PTR_BYTE:11 [ plot::plotter_y#1 plot::plotter_y#2 ]
reg byte a [ plot::$3 ]
reg byte alu [ plot::$5 ]
reg byte a [ plot::$6 ]
reg byte a [ plot::$7 ]
reg byte a [ line_ydxd::$8 ]
reg byte a [ init_plot_tables::$0 ]
reg byte a [ init_plot_tables::$7 ]

View File

@ -40,13 +40,15 @@ main: {
lda RASTER
cmp #$ff
bne b2
ldx BGCOL
inx
stx BGCOL
lda BGCOL
clc
adc #1
sta BGCOL
jsr plots
ldx BGCOL
dex
stx BGCOL
lda BGCOL
sec
sbc #1
sta BGCOL
jmp b2
rts
}
@ -60,8 +62,7 @@ plots: {
tay
ldx i
lda plots_y,x
sty plot.x
tay
tax
jsr plot
inc i
lda i
@ -70,24 +71,21 @@ plots: {
rts
}
plot: {
.label _5 = 8
.label x = 5
.label _5 = 7
.label plotter_x = 3
.label plotter_y = 6
.label plotter_y = 5
.label plotter = 3
ldx x
lda plot_xhi,x
lda plot_xhi,y
sta plotter_x+1
lda #<0
sta plotter_x
ldx x
lda plot_xlo,x
lda plot_xlo,y
sta plotter_x
lda plot_yhi,y
lda plot_yhi,x
sta plotter_y+1
lda #<0
sta plotter_y
lda plot_ylo,y
lda plot_ylo,x
sta plotter_y
lda plotter
clc
@ -96,11 +94,10 @@ plot: {
lda plotter+1
adc plotter_y+1
sta plotter+1
lda plot_bit,y
sta _5
ldy #0
lda (plotter),y
sta _5
ldx x
lda plot_bit,x
ora _5
sta (plotter),y
rts

View File

@ -15,118 +15,114 @@ main::@5: scope:[main] from main
[6] call init_plot_tables param-assignment [ ] ( main:0 [ ] )
to:main::@2
main::@2: scope:[main] from main::@2 main::@5 main::@7
[7] (byte~) main::$5 ← * (const byte*) RASTER#0 [ main::$5 ] ( main:0 [ main::$5 ] )
[8] if((byte~) main::$5!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] )
[7] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@2 [ ] ( main:0 [ ] )
to:main::@3
main::@3: scope:[main] from main::@2
[9] (byte~) main::$7 ← * (const byte*) BGCOL#0 [ main::$7 ] ( main:0 [ main::$7 ] )
[10] (byte~) main::$8 ← (byte~) main::$7 + (byte) 1 [ main::$8 ] ( main:0 [ main::$8 ] )
[11] *((const byte*) BGCOL#0) ← (byte~) main::$8 [ ] ( main:0 [ ] )
[12] call plots param-assignment [ ] ( main:0 [ ] )
[8] (byte~) main::$6 ← *((const byte*) BGCOL#0) + (byte) 1 [ main::$6 ] ( main:0 [ main::$6 ] )
[9] *((const byte*) BGCOL#0) ← (byte~) main::$6 [ ] ( main:0 [ ] )
[10] call plots param-assignment [ ] ( main:0 [ ] )
to:main::@7
main::@7: scope:[main] from main::@3
[13] (byte~) main::$10 ← * (const byte*) BGCOL#0 [ main::$10 ] ( main:0 [ main::$10 ] )
[14] (byte~) main::$11 ← (byte~) main::$10 - (byte) 1 [ main::$11 ] ( main:0 [ main::$11 ] )
[15] *((const byte*) BGCOL#0) ← (byte~) main::$11 [ ] ( main:0 [ ] )
[16] if(true) goto main::@2 [ ] ( main:0 [ ] )
[11] (byte~) main::$8 ← *((const byte*) BGCOL#0) - (byte) 1 [ main::$8 ] ( main:0 [ main::$8 ] )
[12] *((const byte*) BGCOL#0) ← (byte~) main::$8 [ ] ( main:0 [ ] )
[13] if(true) goto main::@2 [ ] ( main:0 [ ] )
to:main::@return
main::@return: scope:[main] from main::@7
[17] return [ ] ( main:0 [ ] )
[14] return [ ] ( main:0 [ ] )
to:@return
plots: scope:[plots] from main::@3
[18] phi() [ ] ( main:0::plots:12 [ ] )
[15] phi() [ ] ( main:0::plots:10 [ ] )
to:plots::@1
plots::@1: scope:[plots] from plots plots::@3
[19] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:12 [ plots::i#2 ] )
[20] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] ( main:0::plots:12 [ plots::i#2 plots::$0 ] )
[21] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] ( main:0::plots:12 [ plots::i#2 plots::$0 plots::$1 ] )
[22] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] ( main:0::plots:12 [ plots::i#2 plots::$1 plot::x#0 ] )
[23] (byte) plot::y#0 ← (byte~) plots::$1 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:0::plots:12 [ plots::i#2 plot::x#0 plot::y#0 ] )
[24] call plot param-assignment [ plots::i#2 ] ( main:0::plots:12 [ plots::i#2 ] )
[16] (byte) plots::i#2 ← phi( plots/(byte) 0 plots::@3/(byte) plots::i#1 ) [ plots::i#2 ] ( main:0::plots:10 [ plots::i#2 ] )
[17] (byte~) plots::$0 ← (const byte[]) plots_x#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 ] ( main:0::plots:10 [ plots::i#2 plots::$0 ] )
[18] (byte~) plots::$1 ← (const byte[]) plots_y#0 *idx (byte) plots::i#2 [ plots::i#2 plots::$0 plots::$1 ] ( main:0::plots:10 [ plots::i#2 plots::$0 plots::$1 ] )
[19] (byte) plot::x#0 ← (byte~) plots::$0 [ plots::i#2 plots::$1 plot::x#0 ] ( main:0::plots:10 [ plots::i#2 plots::$1 plot::x#0 ] )
[20] (byte) plot::y#0 ← (byte~) plots::$1 [ plots::i#2 plot::x#0 plot::y#0 ] ( main:0::plots:10 [ plots::i#2 plot::x#0 plot::y#0 ] )
[21] call plot param-assignment [ plots::i#2 ] ( main:0::plots:10 [ plots::i#2 ] )
to:plots::@3
plots::@3: scope:[plots] from plots::@1
[25] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:0::plots:12 [ plots::i#1 ] )
[26] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:0::plots:12 [ plots::i#1 ] )
[22] (byte) plots::i#1 ← ++ (byte) plots::i#2 [ plots::i#1 ] ( main:0::plots:10 [ plots::i#1 ] )
[23] if((byte) plots::i#1<(const byte) plots_cnt#0) goto plots::@1 [ plots::i#1 ] ( main:0::plots:10 [ plots::i#1 ] )
to:plots::@return
plots::@return: scope:[plots] from plots::@3
[27] return [ ] ( main:0::plots:12 [ ] )
[24] return [ ] ( main:0::plots:10 [ ] )
to:@return
plot: scope:[plot] from plots::@1
[28] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] )
[29] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] )
[30] (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:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 plot::$1 ] )
[31] (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:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] )
[32] (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:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] )
[33] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] )
[34] (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:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] )
[35] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] )
[36] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::plotter#0 ] )
[37] (byte~) plot::$5 ← * (byte*) plot::plotter#0 [ plot::x#0 plot::plotter#0 plot::$5 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::x#0 plot::plotter#0 plot::$5 ] )
[38] (byte~) plot::$6 ← (const byte[]) plot_bit#0 *idx (byte) plot::x#0 [ plot::plotter#0 plot::$5 plot::$6 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::plotter#0 plot::$5 plot::$6 ] )
[39] (byte~) plot::$7 ← (byte~) plot::$5 | (byte~) plot::$6 [ plot::plotter#0 plot::$7 ] ( main:0::plots:12::plot:24 [ plots::i#2 plot::plotter#0 plot::$7 ] )
[40] *((byte*) plot::plotter#0) ← (byte~) plot::$7 [ ] ( main:0::plots:12::plot:24 [ plots::i#2 ] )
[25] (byte~) plot::$0 ← (const byte[]) plot_xhi#0 *idx (byte) plot::x#0 [ plot::x#0 plot::y#0 plot::$0 ] ( main:0::plots:10::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::$0 ] )
[26] (byte*) plot::plotter_x#1 ← (byte) 0 hi= (byte~) plot::$0 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( main:0::plots:10::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:0::plots:10::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:0::plots:10::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:0::plots:10::plot:21 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 plot::$2 ] )
[30] (byte*) plot::plotter_y#1 ← (byte) 0 hi= (byte~) plot::$2 [ plot::x#0 plot::y#0 plot::plotter_x#2 plot::plotter_y#1 ] ( main:0::plots:10::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:0::plots:10::plot:21 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#1 plot::$3 ] )
[32] (byte*) plot::plotter_y#2 ← (byte*) plot::plotter_y#1 lo= (byte~) plot::$3 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( main:0::plots:10::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 + (byte*) plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( main:0::plots:10::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:0::plots:10::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:0::plots:10::plot:21 [ plots::i#2 plot::plotter#0 plot::$6 ] )
[36] *((byte*) plot::plotter#0) ← (byte~) plot::$6 [ ] ( main:0::plots:10::plot:21 [ plots::i#2 ] )
to:plot::@return
plot::@return: scope:[plot] from plot
[41] return [ ] ( main:0::plots:12::plot:24 [ plots::i#2 ] )
[37] return [ ] ( main:0::plots:10::plot:21 [ plots::i#2 ] )
to:@return
init_plot_tables: scope:[init_plot_tables] from main::@5
[42] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
[38] phi() [ ] ( main:0::init_plot_tables:6 [ ] )
to:init_plot_tables::@1
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
[43] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[43] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[44] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] )
[45] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[46] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[47] *((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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[48] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[49] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
[39] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[39] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 ) [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[40] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte) 248 [ init_plot_tables::x#2 init_plot_tables::bits#3 init_plot_tables::$0 ] ( main:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] )
[44] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte) 1 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#1 ] )
[45] if((byte) init_plot_tables::bits#1!=(byte) 0) goto init_plot_tables::@10 [ init_plot_tables::x#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 ] )
to:init_plot_tables::@2
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
[50] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#4 ] )
[51] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[52] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[46] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte) 128 ) [ init_plot_tables::x#2 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] )
[48] if((byte) init_plot_tables::x#1!=(byte) 0) goto init_plot_tables::@1 [ init_plot_tables::x#1 init_plot_tables::bits#4 ] ( main:0::init_plot_tables:6 [ 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
[53] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[53] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[54] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] )
[55] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 init_plot_tables::$7 ] )
[56] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$8 ] )
[57] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[58] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$9 ] )
[59] *((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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[60] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
[61] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[49] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/(byte) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ 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) 0 ) [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[50] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$6 ] ( main:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] )
[56] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte) 7 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 init_plot_tables::$10 ] )
[57] if((byte~) init_plot_tables::$10!=(byte) 7) goto init_plot_tables::@4 [ init_plot_tables::y#2 init_plot_tables::yoffs#2 ] ( main:0::init_plot_tables:6 [ 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
[62] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] )
[58] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (word) 320 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( main:0::init_plot_tables:6 [ 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
[63] (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:0::init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#4 ] )
[64] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[65] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[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:0::init_plot_tables:6 [ 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:0::init_plot_tables:6 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] )
[61] if((byte) init_plot_tables::y#1!=(byte) 0) goto init_plot_tables::@3 [ init_plot_tables::y#1 init_plot_tables::yoffs#4 ] ( main:0::init_plot_tables:6 [ 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
[66] return [ ] ( main:0::init_plot_tables:6 [ ] )
[62] return [ ] ( main:0::init_plot_tables:6 [ ] )
to:@return
init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1
to:init_plot_tables::@2
init_screen: scope:[init_screen] from main
[67] phi() [ ] ( main:0::init_screen:5 [ ] )
[63] phi() [ ] ( main:0::init_screen:5 [ ] )
to:init_screen::@1
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
[68] (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:0::init_screen:5 [ init_screen::b#2 ] )
[69] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
[70] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
[71] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ 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:0::init_screen:5 [ init_screen::b#2 ] )
[65] *((byte*) init_screen::b#2) ← (byte) 0 [ init_screen::b#2 ] ( main:0::init_screen:5 [ init_screen::b#2 ] )
[66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
[67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word) 8192) goto init_screen::@1 [ init_screen::b#1 ] ( main:0::init_screen:5 [ init_screen::b#1 ] )
to:init_screen::@2
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
[72] (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:0::init_screen:5 [ init_screen::c#2 ] )
[73] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
[74] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
[75] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ 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:0::init_screen:5 [ init_screen::c#2 ] )
[69] *((byte*) init_screen::c#2) ← (byte) 20 [ init_screen::c#2 ] ( main:0::init_screen:5 [ init_screen::c#2 ] )
[70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
[71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word) 1024) goto init_screen::@2 [ init_screen::c#1 ] ( main:0::init_screen:5 [ init_screen::c#1 ] )
to:init_screen::@return
init_screen::@return: scope:[init_screen] from init_screen::@2
[76] return [ ] ( main:0::init_screen:5 [ ] )
[72] return [ ] ( main:0::init_screen:5 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -72,11 +72,8 @@
(byte*) init_screen::c#1 c zp ZP_PTR_BYTE:3 16.5
(byte*) init_screen::c#2 c zp ZP_PTR_BYTE:3 16.5
(void()) main()
(byte~) main::$10 reg byte x 22.0
(byte~) main::$11 reg byte x 22.0
(byte~) main::$5 reg byte a 202.0
(byte~) main::$7 reg byte x 22.0
(byte~) main::$8 reg byte x 22.0
(byte~) main::$6 reg byte a 22.0
(byte~) main::$8 reg byte a 22.0
(label) main::@2
(label) main::@3
(label) main::@5
@ -87,22 +84,21 @@
(byte~) plot::$1 reg byte a 4.0
(byte~) plot::$2 reg byte a 4.0
(byte~) plot::$3 reg byte a 4.0
(byte~) plot::$5 $5 zp ZP_BYTE:8 2.0
(byte~) plot::$5 $5 zp ZP_BYTE:7 4.0
(byte~) plot::$6 reg byte a 4.0
(byte~) plot::$7 reg byte a 4.0
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter#0 plotter zp ZP_PTR_BYTE:3 1.5
(byte*) plot::plotter#0 plotter zp ZP_PTR_BYTE:3 1.3333333333333333
(byte*) plot::plotter_x
(byte*) plot::plotter_x#1 plotter_x zp ZP_PTR_BYTE:3 2.0
(byte*) plot::plotter_x#2 plotter_x zp ZP_PTR_BYTE:3 0.8
(byte*) plot::plotter_y
(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:6 2.0
(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:6 4.0
(byte*) plot::plotter_y#1 plotter_y zp ZP_PTR_BYTE:5 2.0
(byte*) plot::plotter_y#2 plotter_y zp ZP_PTR_BYTE:5 4.0
(byte) plot::x
(byte) plot::x#0 x zp ZP_BYTE:5 8.916666666666664
(byte) plot::x#0 reg byte y 9.727272727272727
(byte) plot::y
(byte) plot::y#0 reg byte y 15.000000000000002
(byte) plot::y#0 reg byte x 15.000000000000002
(byte[]) plot_bit
(const byte[]) plot_bit#0 plot_bit = (word) 5120
(byte[]) plot_xhi
@ -134,23 +130,19 @@ reg byte x [ init_plot_tables::x#2 init_plot_tables::x#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::y#2 init_plot_tables::y#1 ]
zp ZP_PTR_BYTE:3 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ]
reg byte a [ main::$5 ]
reg byte x [ main::$7 ]
reg byte x [ main::$8 ]
reg byte x [ main::$10 ]
reg byte x [ main::$11 ]
reg byte a [ main::$6 ]
reg byte a [ main::$8 ]
reg byte y [ plots::$0 ]
reg byte a [ plots::$1 ]
zp ZP_BYTE:5 [ plot::x#0 ]
reg byte y [ plot::y#0 ]
reg byte y [ plot::x#0 ]
reg byte x [ plot::y#0 ]
reg byte a [ plot::$0 ]
reg byte a [ plot::$1 ]
reg byte a [ plot::$2 ]
zp ZP_PTR_BYTE:6 [ plot::plotter_y#1 plot::plotter_y#2 ]
zp ZP_PTR_BYTE:5 [ plot::plotter_y#1 plot::plotter_y#2 ]
reg byte a [ plot::$3 ]
zp ZP_BYTE:8 [ plot::$5 ]
zp ZP_BYTE:7 [ plot::$5 ]
reg byte a [ plot::$6 ]
reg byte a [ plot::$7 ]
reg byte a [ init_plot_tables::$0 ]
reg byte a [ init_plot_tables::$7 ]
reg byte a [ init_plot_tables::$8 ]

View File

@ -10,97 +10,95 @@ main: scope:[main] from @4
to:main::@3
main::@3: scope:[main] from main main::@11 main::@3 main::@6
[3] (byte) main::c#4 ← phi( main/(byte) 25 main::@6/(byte) main::c#1 main::@11/(byte) 25 ) [ main::c#4 ] ( main:0 [ main::c#4 ] )
[4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#4 main::$1 ] ( main:0 [ main::c#4 main::$1 ] )
[5] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] )
[4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@3 [ main::c#4 ] ( main:0 [ main::c#4 ] )
to:main::@4
main::@4: scope:[main] from main::@3 main::@4
[6] (byte~) main::$3 ← * (const byte*) RASTER#0 [ main::c#4 main::$3 ] ( main:0 [ main::c#4 main::$3 ] )
[7] if((byte~) main::$3!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] )
[5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@4 [ main::c#4 ] ( main:0 [ main::c#4 ] )
to:main::@6
main::@6: scope:[main] from main::@4
[8] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] )
[9] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] )
[6] (byte) main::c#1 ← -- (byte) main::c#4 [ main::c#1 ] ( main:0 [ main::c#1 ] )
[7] if((byte) main::c#1!=(byte) 0) goto main::@3 [ main::c#1 ] ( main:0 [ main::c#1 ] )
to:main::@7
main::@7: scope:[main] from main::@6
[10] call flip param-assignment [ ] ( main:0 [ ] )
[8] call flip param-assignment [ ] ( main:0 [ ] )
to:main::@10
main::@10: scope:[main] from main::@7
[11] call plot param-assignment [ ] ( main:0 [ ] )
[9] call plot param-assignment [ ] ( main:0 [ ] )
to:main::@11
main::@11: scope:[main] from main::@10
[12] if(true) goto main::@3 [ ] ( main:0 [ ] )
[10] if(true) goto main::@3 [ ] ( main:0 [ ] )
to:main::@return
main::@return: scope:[main] from main::@11
[13] return [ ] ( main:0 [ ] )
[11] return [ ] ( main:0 [ ] )
to:@return
plot: scope:[plot] from main::@10
[14] phi() [ ] ( main:0::plot:11 [ ] )
[12] phi() [ ] ( main:0::plot:9 [ ] )
to:plot::@1
plot::@1: scope:[plot] from plot plot::@3
[15] (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:11 [ plot::i#3 plot::line#4 plot::y#4 ] )
[15] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:11 [ plot::i#3 plot::line#4 plot::y#4 ] )
[15] (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:11 [ plot::i#3 plot::line#4 plot::y#4 ] )
[13] (byte) plot::y#4 ← phi( plot/(byte) 16 plot::@3/(byte) plot::y#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] )
[13] (byte*) plot::line#4 ← phi( plot/(const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 plot::@3/(byte*) plot::line#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] )
[13] (byte) plot::i#3 ← phi( plot/(byte) 0 plot::@3/(byte) plot::i#1 ) [ plot::i#3 plot::line#4 plot::y#4 ] ( main:0::plot:9 [ plot::i#3 plot::line#4 plot::y#4 ] )
to:plot::@2
plot::@2: scope:[plot] from plot::@1 plot::@2
[16] (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:11 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] )
[16] (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:0::plot:11 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] )
[17] (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:0::plot:11 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] )
[18] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:11 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] )
[19] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:0::plot:11 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] )
[20] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:11 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] )
[21] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:11 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] )
[14] (byte) plot::x#2 ← phi( plot::@1/(byte) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] )
[14] (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:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] )
[15] (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:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 plot::$3 ] )
[16] *((byte*) plot::line#4 + (byte) plot::x#2) ← (byte~) plot::$3 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] )
[17] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] )
[18] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] )
[19] if((byte) plot::x#1<(byte) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:0::plot:9 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] )
to:plot::@3
plot::@3: scope:[plot] from plot::@2
[22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:11 [ plot::y#4 plot::i#1 plot::line#1 ] )
[23] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:11 [ plot::i#1 plot::line#1 plot::y#1 ] )
[24] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:11 [ plot::i#1 plot::line#1 plot::y#1 ] )
[20] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:0::plot:9 [ plot::y#4 plot::i#1 plot::line#1 ] )
[21] (byte) plot::y#1 ← -- (byte) plot::y#4 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] )
[22] if((byte) plot::y#1!=(byte) 0) goto plot::@1 [ plot::i#1 plot::line#1 plot::y#1 ] ( main:0::plot:9 [ plot::i#1 plot::line#1 plot::y#1 ] )
to:plot::@return
plot::@return: scope:[plot] from plot::@3
[25] return [ ] ( main:0::plot:11 [ ] )
[23] return [ ] ( main:0::plot:9 [ ] )
to:@return
flip: scope:[flip] from main::@7
[26] phi() [ ] ( main:0::flip:10 [ ] )
[24] phi() [ ] ( main:0::flip:8 [ ] )
to:flip::@1
flip::@1: scope:[flip] from flip flip::@4
[27] (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:10 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] )
[27] (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:10 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] )
[27] (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:10 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] )
[25] (byte) flip::r#4 ← phi( flip/(byte) 16 flip::@4/(byte) flip::r#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] )
[25] (byte) flip::dstIdx#5 ← phi( flip/(byte) 15 flip::@4/(byte) flip::dstIdx#2 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] )
[25] (byte) flip::srcIdx#3 ← phi( flip/(byte) 0 flip::@4/(byte) flip::srcIdx#1 ) [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] ( main:0::flip:8 [ flip::srcIdx#3 flip::dstIdx#5 flip::r#4 ] )
to:flip::@2
flip::@2: scope:[flip] from flip::@1 flip::@2
[28] (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:10 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[28] (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:0::flip:10 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[28] (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:0::flip:10 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[29] (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:0::flip:10 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] )
[30] *((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:0::flip:10 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[31] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:10 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] )
[32] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:10 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] )
[33] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:10 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] )
[34] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:10 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] )
[26] (byte) flip::c#2 ← phi( flip::@1/(byte) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[26] (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:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[26] (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:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[27] (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:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] )
[28] *((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:0::flip:8 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] )
[29] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] )
[30] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] )
[31] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] )
[32] if((byte) flip::c#1!=(byte) 0) goto flip::@2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] )
to:flip::@4
flip::@4: scope:[flip] from flip::@2
[35] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:0::flip:10 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] )
[36] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:10 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] )
[37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:10 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] )
[33] (byte) flip::dstIdx#2 ← -- (byte) flip::dstIdx#1 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] ( main:0::flip:8 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#2 ] )
[34] (byte) flip::r#1 ← -- (byte) flip::r#4 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] )
[35] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] ( main:0::flip:8 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] )
to:flip::@3
flip::@3: scope:[flip] from flip::@3 flip::@4
[38] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte) 0 ) [ flip::i#2 ] ( main:0::flip:10 [ flip::i#2 ] )
[39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:0::flip:10 [ flip::i#2 flip::$4 ] )
[40] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:0::flip:10 [ flip::i#2 ] )
[41] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:10 [ flip::i#1 ] )
[42] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:10 [ flip::i#1 ] )
[36] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte) 0 ) [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] )
[37] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] ( main:0::flip:8 [ flip::i#2 flip::$4 ] )
[38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← (byte~) flip::$4 [ flip::i#2 ] ( main:0::flip:8 [ flip::i#2 ] )
[39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] )
[40] if((byte) flip::i#1!=(byte) 0) goto flip::@3 [ flip::i#1 ] ( main:0::flip:8 [ flip::i#1 ] )
to:flip::@return
flip::@return: scope:[flip] from flip::@3
[43] return [ ] ( main:0::flip:10 [ ] )
[41] return [ ] ( main:0::flip:8 [ ] )
to:@return
prepare: scope:[prepare] from main
[44] phi() [ ] ( main:0::prepare:2 [ ] )
[42] phi() [ ] ( main:0::prepare:2 [ ] )
to:prepare::@1
prepare::@1: scope:[prepare] from prepare prepare::@1
[45] (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] )
[46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] )
[47] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] )
[48] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] )
[43] (byte) prepare::i#2 ← phi( prepare/(byte) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] )
[44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:0::prepare:2 [ prepare::i#2 ] )
[45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] )
[46] if((byte) prepare::i#1!=(byte) 0) goto prepare::@1 [ prepare::i#1 ] ( main:0::prepare:2 [ prepare::i#1 ] )
to:prepare::@return
prepare::@return: scope:[prepare] from prepare::@1
[49] return [ ] ( main:0::prepare:2 [ ] )
[47] return [ ] ( main:0::prepare:2 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -36,8 +36,6 @@
(byte) flip::srcIdx#2 reg byte x 1034.6666666666667
(byte) flip::srcIdx#3 reg byte x 202.0
(void()) main()
(byte~) main::$1 reg byte a 2002.0
(byte~) main::$3 reg byte a 2002.0
(label) main::@10
(label) main::@11
(label) main::@3
@ -47,7 +45,7 @@
(label) main::@return
(byte) main::c
(byte) main::c#1 reg byte x 151.5
(byte) main::c#4 reg byte x 40.4
(byte) main::c#4 reg byte x 67.33333333333333
(void()) plot()
(byte~) plot::$3 reg byte a 2002.0
(label) plot::@1
@ -84,8 +82,6 @@ reg byte y [ 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 [ main::$1 ]
reg byte a [ main::$3 ]
reg byte a [ plot::$3 ]
reg byte a [ flip::$0 ]
reg byte a [ flip::$4 ]

View File

@ -10,10 +10,10 @@
bits_count: .byte 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4
jsr main
main: {
.label _2 = 6
.label _15 = 9
.label _28 = 9
.label _40 = 9
.label _1 = 6
.label _12 = 9
.label _23 = 9
.label _33 = 9
.label chargen1 = 7
.label bits_gen = 6
.label charset4 = 4
@ -40,12 +40,12 @@ main: {
ldy #0
lda (chargen),y
and #$60
sta _2
sta _1
lda (chargen1),y
and #$60
lsr
lsr
ora _2
ora _1
lsr
lsr
lsr
@ -63,12 +63,12 @@ main: {
ldy #0
lda (chargen),y
and #$18
sta _15
sta _12
lda (chargen1),y
and #$18
lsr
lsr
ora _15
ora _12
lsr
tax
lda bits_count,x
@ -81,11 +81,11 @@ main: {
lda (chargen),y
and #6
asl
sta _28
sta _23
lda (chargen1),y
and #6
lsr
ora _28
ora _23
tax
lda bits_count,x
cmp #2
@ -98,10 +98,10 @@ main: {
and #1
asl
asl
sta _40
sta _33
lda (chargen1),y
and #1
ora _40
ora _33
tax
lda bits_count,x
cmp #2

View File

@ -12,87 +12,79 @@ main::@1: scope:[main] from main main::@5
[3] (byte*) main::charset4#10 ← phi( main/(const byte*) CHARSET4#0 main::@5/(byte*) main::charset4#1 ) [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] )
[3] (byte*) main::chargen#10 ← phi( main/(const byte*) CHARGEN#0 main::@5/(byte*) main::chargen#1 ) [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] )
[4] (byte*) main::chargen1#0 ← (byte*) main::chargen#10 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] )
[5] (byte~) main::$1 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] )
[6] (byte~) main::$2 ← (byte~) main::$1 & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 ] )
[7] (byte~) main::$3 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$3 ] )
[8] (byte~) main::$4 ← (byte~) main::$3 & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$4 ] )
[9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$2 main::$5 ] )
[10] (byte~) main::$6 ← (byte~) main::$2 | (byte~) main::$5 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] )
[11] (byte~) main::$7 ← (byte~) main::$6 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$7 ] )
[12] (byte~) main::$8 ← (byte~) main::$7 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$8 ] )
[13] (byte) main::bits#0 ← (const byte[]) bits_count#0 *idx (byte~) main::$8 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] )
[14] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] )
[5] (byte~) main::$1 ← *((byte*) main::chargen#10) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 ] )
[6] (byte~) main::$2 ← *((byte*) main::chargen1#0) & (byte) 96 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$2 ] )
[7] (byte~) main::$3 ← (byte~) main::$2 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$1 main::$3 ] )
[8] (byte~) main::$4 ← (byte~) main::$1 | (byte~) main::$3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$4 ] )
[9] (byte~) main::$5 ← (byte~) main::$4 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$5 ] )
[10] (byte~) main::$6 ← (byte~) main::$5 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::$6 ] )
[11] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits#0 ] )
[12] if((byte) main::bits#0<(byte) 2) goto main::@2 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 ] )
to:main::@7
main::@7: scope:[main] from main::@1
to:main::@2
main::@2: scope:[main] from main::@1 main::@7
[15] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] )
[16] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] )
[17] (byte~) main::$14 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$14 ] )
[18] (byte~) main::$15 ← (byte~) main::$14 & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] )
[19] (byte~) main::$16 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$16 ] )
[20] (byte~) main::$17 ← (byte~) main::$16 & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$17 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$17 ] )
[21] (byte~) main::$18 ← (byte~) main::$17 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$18 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 main::$18 ] )
[22] (byte~) main::$19 ← (byte~) main::$15 | (byte~) main::$18 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$19 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$19 ] )
[23] (byte~) main::$20 ← (byte~) main::$19 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$20 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$20 ] )
[24] (byte) main::bits#1 ← (const byte[]) bits_count#0 *idx (byte~) main::$20 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] )
[25] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] )
[13] (byte) main::bits_gen#9 ← phi( main::@1/(byte) 0 main::@7/(byte) 0+(byte) 1 ) [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#9 ] )
[14] (byte) main::bits_gen#1 ← (byte) main::bits_gen#9 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] )
[15] (byte~) main::$12 ← *((byte*) main::chargen#10) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 ] )
[16] (byte~) main::$13 ← *((byte*) main::chargen1#0) & (byte) 24 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$13 ] )
[17] (byte~) main::$14 ← (byte~) main::$13 >> (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$12 main::$14 ] )
[18] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$15 ] )
[19] (byte~) main::$16 ← (byte~) main::$15 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::$16 ] )
[20] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 main::bits#1 ] )
[21] if((byte) main::bits#1<(byte) 2) goto main::@3 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#1 ] )
to:main::@8
main::@8: scope:[main] from main::@2
[26] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] )
[22] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] )
to:main::@3
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:0 [ 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) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] )
[29] (byte~) main::$26 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] )
[30] (byte~) main::$27 ← (byte~) main::$26 & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$27 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$27 ] )
[31] (byte~) main::$28 ← (byte~) main::$27 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 ] )
[32] (byte~) main::$29 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$29 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$29 ] )
[33] (byte~) main::$30 ← (byte~) main::$29 & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$30 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$30 ] )
[34] (byte~) main::$31 ← (byte~) main::$30 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$31 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$28 main::$31 ] )
[35] (byte~) main::$32 ← (byte~) main::$28 | (byte~) main::$31 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$32 ] )
[36] (byte) main::bits#2 ← (const byte[]) bits_count#0 *idx (byte~) main::$32 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] )
[37] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] )
[23] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#11 ] )
[24] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] )
[25] (byte~) main::$22 ← *((byte*) main::chargen#10) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$22 ] )
[26] (byte~) main::$23 ← (byte~) main::$22 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 ] )
[27] (byte~) main::$24 ← *((byte*) main::chargen1#0) & (byte) 6 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$24 ] )
[28] (byte~) main::$25 ← (byte~) main::$24 >> (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$23 main::$25 ] )
[29] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::$26 ] )
[30] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 main::bits#2 ] )
[31] if((byte) main::bits#2<(byte) 2) goto main::@4 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] )
to:main::@9
main::@9: scope:[main] from main::@3
[38] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] )
[32] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] )
to:main::@4
main::@4: scope:[main] from main::@3 main::@9
[39] (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:0 [ 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) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] )
[41] (byte~) main::$38 ← * (byte*) main::chargen#10 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$38 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$38 ] )
[42] (byte~) main::$39 ← (byte~) main::$38 & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$39 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$39 ] )
[43] (byte~) main::$40 ← (byte~) main::$39 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$40 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$40 ] )
[44] (byte~) main::$41 ← * (byte*) main::chargen1#0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$41 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$41 ] )
[45] (byte~) main::$42 ← (byte~) main::$41 & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$42 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$40 main::$42 ] )
[46] (byte~) main::$43 ← (byte~) main::$40 | (byte~) main::$42 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$43 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$43 ] )
[47] (byte) main::bits#3 ← (const byte[]) bits_count#0 *idx (byte~) main::$43 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] )
[48] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] )
[33] (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:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#13 ] )
[34] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] )
[35] (byte~) main::$32 ← *((byte*) main::chargen#10) & (byte) 1 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$32 ] )
[36] (byte~) main::$33 ← (byte~) main::$32 << (byte) 2 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] ( main:0 [ main::chargen#10 main::charset4#10 main::chargen1#0 main::bits_gen#16 main::$33 ] )
[37] (byte~) main::$34 ← *((byte*) main::chargen1#0) & (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$33 main::$34 ] )
[38] (byte~) main::$35 ← (byte~) main::$33 | (byte~) main::$34 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::$35 ] )
[39] (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:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 main::bits#3 ] )
[40] if((byte) main::bits#3<(byte) 2) goto main::@5 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#16 ] )
to:main::@10
main::@10: scope:[main] from main::@4
[49] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] )
[41] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#8 ] )
to:main::@5
main::@5: scope:[main] from main::@10 main::@4
[50] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] )
[51] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] )
[52] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] )
[53] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] ( main:0 [ main::chargen#10 main::charset4#1 ] )
[54] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] )
[55] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] )
[42] (byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#16 ) [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#15 ] )
[43] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] ( main:0 [ main::chargen#10 main::charset4#10 main::bits_gen#7 ] )
[44] *((byte*) main::charset4#10) ← (byte) main::bits_gen#7 [ main::chargen#10 main::charset4#10 ] ( main:0 [ main::chargen#10 main::charset4#10 ] )
[45] (byte*) main::charset4#1 ← ++ (byte*) main::charset4#10 [ main::chargen#10 main::charset4#1 ] ( main:0 [ main::chargen#10 main::charset4#1 ] )
[46] (byte*) main::chargen#1 ← (byte*) main::chargen#10 + (byte) 2 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] )
[47] if((byte*) main::chargen#1<(const byte*) CHARGEN#0+(word) 2048) goto main::@1 [ main::chargen#1 main::charset4#1 ] ( main:0 [ main::chargen#1 main::charset4#1 ] )
to:main::@11
main::@11: scope:[main] from main::@5
[56] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] )
[48] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] ( main:0 [ ] )
asm { cli }
to:main::@6
main::@6: scope:[main] from main::@11 main::@6
[58] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] )
[59] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] )
[60] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] )
[61] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] )
[50] (byte) main::i#2 ← phi( main::@11/(byte) 0 main::@6/(byte) main::i#1 ) [ main::i#2 ] ( main:0 [ main::i#2 ] )
[51] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] ( main:0 [ main::i#2 ] )
[52] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:0 [ main::i#1 ] )
[53] if((byte) main::i#1!=(byte) 0) goto main::@6 [ main::i#1 ] ( main:0 [ main::i#1 ] )
to:main::@12
main::@12: scope:[main] from main::@6
[62] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] )
[54] *((const byte*) D018#0) ← (byte) 25 [ ] ( main:0 [ ] )
to:main::@return
main::@return: scope:[main] from main::@12
[63] return [ ] ( main:0 [ ] )
[55] return [ ] ( main:0 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -16,34 +16,26 @@
(byte[]) bits_count
(const byte[]) bits_count#0 bits_count = { (byte) 0, (byte) 1, (byte) 1, (byte) 2, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 1, (byte) 2, (byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 3, (byte) 4 }
(void()) main()
(byte~) main::$1 reg byte a 22.0
(byte~) main::$1 $1 zp ZP_BYTE:6 7.333333333333333
(byte~) main::$12 $12 zp ZP_BYTE:9 7.333333333333333
(byte~) main::$13 reg byte a 22.0
(byte~) main::$14 reg byte a 22.0
(byte~) main::$15 $15 zp ZP_BYTE:9 5.5
(byte~) main::$15 reg byte a 22.0
(byte~) main::$16 reg byte a 22.0
(byte~) main::$17 reg byte a 22.0
(byte~) main::$18 reg byte a 22.0
(byte~) main::$19 reg byte a 22.0
(byte~) main::$2 $2 zp ZP_BYTE:6 5.5
(byte~) main::$20 reg byte a 22.0
(byte~) main::$2 reg byte a 22.0
(byte~) main::$22 reg byte a 22.0
(byte~) main::$23 $23 zp ZP_BYTE:9 7.333333333333333
(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::$27 reg byte a 22.0
(byte~) main::$28 $28 zp ZP_BYTE:9 5.5
(byte~) main::$29 reg byte a 22.0
(byte~) main::$3 reg byte a 22.0
(byte~) main::$30 reg byte a 22.0
(byte~) main::$31 reg byte a 22.0
(byte~) main::$32 reg byte a 22.0
(byte~) main::$38 reg byte a 22.0
(byte~) main::$39 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::$40 $40 zp ZP_BYTE:9 7.333333333333333
(byte~) main::$41 reg byte a 22.0
(byte~) main::$42 reg byte a 22.0
(byte~) main::$43 reg byte a 22.0
(byte~) main::$5 reg byte a 22.0
(byte~) main::$6 reg byte a 22.0
(byte~) main::$7 reg byte a 22.0
(byte~) main::$8 reg byte a 22.0
(label) main::@1
(label) main::@10
(label) main::@11
@ -63,12 +55,12 @@
(byte) main::bits#2 reg byte a 22.0
(byte) main::bits#3 reg byte a 22.0
(byte) main::bits_gen
(byte) main::bits_gen#1 bits_gen zp ZP_BYTE:6 3.3000000000000003
(byte) main::bits_gen#1 bits_gen zp ZP_BYTE:6 4.125
(byte) main::bits_gen#11 bits_gen zp ZP_BYTE:6 33.0
(byte) main::bits_gen#13 bits_gen zp ZP_BYTE:6 33.0
(byte) main::bits_gen#14 bits_gen zp ZP_BYTE:6 3.3000000000000003
(byte) main::bits_gen#14 bits_gen zp ZP_BYTE:6 4.125
(byte) main::bits_gen#15 bits_gen zp ZP_BYTE:6 33.0
(byte) main::bits_gen#16 bits_gen zp ZP_BYTE:6 3.666666666666667
(byte) main::bits_gen#16 bits_gen zp ZP_BYTE:6 4.714285714285714
(byte) main::bits_gen#4 bits_gen zp ZP_BYTE:6 22.0
(byte) main::bits_gen#6 bits_gen zp ZP_BYTE:6 22.0
(byte) main::bits_gen#7 reg byte a 22.0
@ -76,12 +68,12 @@
(byte) main::bits_gen#9 reg byte a 11.0
(byte*) main::chargen
(byte*) main::chargen#1 chargen zp ZP_PTR_BYTE:2 16.5
(byte*) main::chargen#10 chargen zp ZP_PTR_BYTE:2 1.5098039215686279
(byte*) main::chargen#10 chargen zp ZP_PTR_BYTE:2 0.7674418604651163
(byte*) main::chargen1
(byte*) main::chargen1#0 chargen1 zp ZP_PTR_BYTE:7 1.375
(byte*) main::chargen1#0 chargen1 zp ZP_PTR_BYTE:7 0.3333333333333333
(byte*) main::charset4
(byte*) main::charset4#1 charset4 zp ZP_PTR_BYTE:4 7.333333333333333
(byte*) main::charset4#10 charset4 zp ZP_PTR_BYTE:4 0.66
(byte*) main::charset4#10 charset4 zp ZP_PTR_BYTE:4 0.7857142857142858
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 22.0
@ -89,36 +81,28 @@
zp ZP_PTR_BYTE:2 [ main::chargen#10 main::chargen#1 ]
zp ZP_PTR_BYTE:4 [ main::charset4#10 main::charset4#1 ]
reg byte a [ main::bits_gen#9 ]
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::$2 ]
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 ]
reg byte x [ main::i#2 main::i#1 ]
zp ZP_PTR_BYTE:7 [ main::chargen1#0 ]
reg byte a [ main::$1 ]
reg byte a [ main::$2 ]
reg byte a [ main::$3 ]
reg byte a [ main::$4 ]
reg byte a [ main::$5 ]
reg byte a [ main::$6 ]
reg byte a [ main::$7 ]
reg byte a [ main::$8 ]
reg byte a [ main::bits#0 ]
zp ZP_BYTE:9 [ main::$12 main::$23 main::$33 ]
reg byte a [ main::$13 ]
reg byte a [ main::$14 ]
zp ZP_BYTE:9 [ main::$15 main::$28 main::$40 ]
reg byte a [ main::$15 ]
reg byte a [ main::$16 ]
reg byte a [ main::$17 ]
reg byte a [ main::$18 ]
reg byte a [ main::$19 ]
reg byte a [ main::$20 ]
reg byte a [ main::bits#1 ]
reg byte a [ main::$22 ]
reg byte a [ main::$24 ]
reg byte a [ main::$25 ]
reg byte a [ main::$26 ]
reg byte a [ main::$27 ]
reg byte a [ main::$29 ]
reg byte a [ main::$30 ]
reg byte a [ main::$31 ]
reg byte a [ main::$32 ]
reg byte a [ main::bits#2 ]
reg byte a [ main::$38 ]
reg byte a [ main::$39 ]
reg byte a [ main::$41 ]
reg byte a [ main::$42 ]
reg byte a [ main::$43 ]
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 ]

View File

@ -0,0 +1,12 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.const BGCOL = $d020
jsr main
main: {
b1:
inc BGCOL
dec BGCOL
jmp b1
rts
}

View File

@ -0,0 +1,17 @@
@begin: scope:[] from
to:@1
@1: scope:[] from @begin
[0] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
[1] phi() [ ] ( main:0 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@1
[2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] )
[3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] )
[4] if(true) goto main::@1 [ ] ( main:0 [ ] )
to:main::@return
main::@return: scope:[main] from main::@1
[5] return [ ] ( main:0 [ ] )
to:@return

View File

@ -0,0 +1,579 @@
// Incrementing / decrementing pointer content should result in code modifying the memory location - eg. inc $d020.
// Currently it does not but instead leads to just reading the value a few times.
byte* BGCOL = $d020;
void main() {
do {
++*BGCOL;
(*BGCOL)--;
} while (true);
}
Adding pre/post-modifier *((byte*) BGCOL) ← ++ *((byte*) BGCOL)
Adding pre/post-modifier *((byte*) BGCOL) ← -- *((byte*) BGCOL)
PROGRAM
(byte*) BGCOL ← (word) 53280
proc (void()) main()
main::@1:
*((byte*) BGCOL) ← ++ *((byte*) BGCOL)
*((byte*) BGCOL) ← -- *((byte*) BGCOL)
if(true) goto main::@1
main::@return:
return
endproc // main()
call main
SYMBOLS
(byte*) BGCOL
(void()) main()
(label) main::@1
(label) main::@return
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) BGCOL ← (word) 53280
to:@1
main: scope:[main] from
to:main::@1
main::@1: scope:[main] from main main::@1
*((byte*) BGCOL) ← ++ *((byte*) BGCOL)
*((byte*) BGCOL) ← -- *((byte*) BGCOL)
if(true) 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*) BGCOL ← (word) 53280
to:@1
main: scope:[main] from
to:main::@1
main::@1: scope:[main] from main main::@1
*((byte*) BGCOL) ← ++ *((byte*) BGCOL)
*((byte*) BGCOL) ← -- *((byte*) BGCOL)
if(true) 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*) BGCOL ← (word) 53280
to:@1
main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
*((byte*) BGCOL) ← ++ *((byte*) BGCOL)
*((byte*) BGCOL) ← -- *((byte*) BGCOL)
if(true) 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*) BGCOL#0 ← (word) 53280
to:@1
main: scope:[main] from @1
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) BGCOL#1 ← phi( main/(byte*) BGCOL#2 main::@1/(byte*) BGCOL#1 )
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
*((byte*) BGCOL#1) ← -- *((byte*) BGCOL#1)
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte*) BGCOL#3 ← phi( @begin/(byte*) BGCOL#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*) BGCOL#0 ← (word) 53280
to:@1
main: scope:[main] from @1
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) BGCOL#1 ← phi( main/(byte*) BGCOL#2 main::@1/(byte*) BGCOL#1 )
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
*((byte*) BGCOL#1) ← -- *((byte*) BGCOL#1)
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte*) BGCOL#3 ← phi( @begin/(byte*) BGCOL#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*) BGCOL
(byte*) BGCOL#0
(byte*) BGCOL#1
(byte*) BGCOL#2
(byte*) BGCOL#3
(void()) main()
(label) main::@1
(label) main::@return
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280
to:@1
main: scope:[main] from @1
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) BGCOL#1 ← phi( main/(byte*) BGCOL#2 main::@1/(byte*) BGCOL#1 )
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
*((byte*) BGCOL#1) ← -- *((byte*) BGCOL#1)
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
@1: scope:[] from @begin
(byte*) BGCOL#3 ← phi( @begin/(byte*) BGCOL#0 )
call main param-assignment
to:@end
@end: scope:[] from @1
Alias (byte*) BGCOL#0 = (byte*) BGCOL#2 (byte*) BGCOL#3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280
to:@1
main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) BGCOL#1 ← phi( main/(byte*) BGCOL#0 main::@1/(byte*) BGCOL#1 )
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
*((byte*) BGCOL#1) ← -- *((byte*) BGCOL#1)
if(true) 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
Self Phi Eliminated (byte*) BGCOL#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280
to:@1
main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
(byte*) BGCOL#1 ← phi( main/(byte*) BGCOL#0 )
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
*((byte*) BGCOL#1) ← -- *((byte*) BGCOL#1)
if(true) 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*) BGCOL#1 (byte*) BGCOL#0
Succesful SSA optimization Pass2RedundantPhiElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
(byte*) BGCOL#0 ← (word) 53280
to:@1
main: scope:[main] from @1
to:main::@1
main::@1: scope:[main] from main main::@1
*((byte*) BGCOL#0) ← ++ *((byte*) BGCOL#0)
*((byte*) BGCOL#0) ← -- *((byte*) BGCOL#0)
if(true) 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*) BGCOL#0 = 53280
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
*((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0)
*((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0)
if(true) 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*) BGCOL
(const byte*) BGCOL#0 = (word) 53280
(void()) main()
(label) main::@1
(label) main::@return
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Block Sequence Planned @begin @1 @end main main::@1 main::@return
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::@1
*((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0)
*((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0)
if(true) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1
return
to:@return
Adding NOP phi() at start of main
CALL GRAPH
Calls in [] to main:0
Propagating live ranges...
CONTROL FLOW GRAPH - LIVE RANGES FOUND
@begin: scope:[] from
to:@1
@1: scope:[] from @begin
[0] call main param-assignment [ ]
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
[1] phi() [ ]
to:main::@1
main::@1: scope:[main] from main main::@1
[2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ]
[3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ]
[4] if(true) goto main::@1 [ ]
to:main::@return
main::@return: scope:[main] from main::@1
[5] return [ ]
to:@return
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
Block Sequence Planned @begin @1 @end main main::@1 main::@return
Adding NOP phi() at start of main
Propagating live ranges...
CONTROL FLOW GRAPH - BEFORE EFFECTIVE LIVE RANGES
@begin: scope:[] from
to:@1
@1: scope:[] from @begin
[0] call main param-assignment [ ]
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
[1] phi() [ ]
to:main::@1
main::@1: scope:[main] from main main::@1
[2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ]
[3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ]
[4] if(true) goto main::@1 [ ]
to:main::@return
main::@return: scope:[main] from main::@1
[5] return [ ]
to:@return
CONTROL FLOW GRAPH - PHI MEM COALESCED
@begin: scope:[] from
to:@1
@1: scope:[] from @begin
[0] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @1
main: scope:[main] from @1
[1] phi() [ ] ( main:0 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@1
[2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] )
[3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] )
[4] if(true) goto main::@1 [ ] ( main:0 [ ] )
to:main::@return
main::@return: scope:[main] from main::@1
[5] return [ ] ( main:0 [ ] )
to:@return
DOMINATORS
@begin dominated by @begin
@1 dominated by @1 @begin
@end dominated by @1 @end @begin
main dominated by @1 @begin main
main::@1 dominated by @1 @begin main::@1 main
main::@return dominated by @1 main::@return @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*) BGCOL
(void()) main()
Initial phi equivalence classes
Complete equivalence classes
INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.const BGCOL = $d020
//SEG2 @begin
bbegin:
jmp b1
//SEG3 @1
b1:
//SEG4 [0] call main param-assignment [ ] ( )
//SEG5 [1] phi from @1 to main [phi:@1->main]
main_from_b1:
jsr main
jmp bend
//SEG6 @end
bend:
//SEG7 main
main: {
jmp b1
//SEG8 main::@1
b1:
//SEG9 [2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_inc__star_cowo1
inc BGCOL
//SEG10 [3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_dec__star_cowo1
dec BGCOL
//SEG11 [4] if(true) goto main::@1 [ ] ( main:0 [ ] ) -- true_then_la1
jmp b1
jmp breturn
//SEG12 main::@return
breturn:
//SEG13 [5] return [ ] ( main:0 [ ] )
rts
}
REGISTER UPLIFT POTENTIAL REGISTERS
REGISTER UPLIFT SCOPES
Uplift Scope [main]
Uplift Scope []
Uplifting [main] best 255 combination
Uplifting [] best 255 combination
Removing instruction jmp b1
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
ASSEMBLER
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.const BGCOL = $d020
//SEG2 @begin
bbegin:
//SEG3 @1
b1:
//SEG4 [0] call main param-assignment [ ] ( )
//SEG5 [1] phi from @1 to main [phi:@1->main]
main_from_b1:
jsr main
//SEG6 @end
bend:
//SEG7 main
main: {
//SEG8 main::@1
b1:
//SEG9 [2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_inc__star_cowo1
inc BGCOL
//SEG10 [3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_dec__star_cowo1
dec BGCOL
//SEG11 [4] if(true) goto main::@1 [ ] ( main:0 [ ] ) -- true_then_la1
jmp b1
//SEG12 main::@return
breturn:
//SEG13 [5] return [ ] ( main:0 [ ] )
rts
}
Removing instruction bbegin:
Removing instruction main_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
ASSEMBLER
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.const BGCOL = $d020
//SEG2 @begin
//SEG3 @1
b1:
//SEG4 [0] call main param-assignment [ ] ( )
//SEG5 [1] phi from @1 to main [phi:@1->main]
jsr main
//SEG6 @end
bend:
//SEG7 main
main: {
//SEG8 main::@1
b1:
//SEG9 [2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_inc__star_cowo1
inc BGCOL
//SEG10 [3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_dec__star_cowo1
dec BGCOL
//SEG11 [4] if(true) goto main::@1 [ ] ( main:0 [ ] ) -- true_then_la1
jmp b1
//SEG12 main::@return
breturn:
//SEG13 [5] return [ ] ( main:0 [ ] )
rts
}
Removing instruction b1:
Removing instruction bend:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
ASSEMBLER
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.const BGCOL = $d020
//SEG2 @begin
//SEG3 @1
//SEG4 [0] call main param-assignment [ ] ( )
//SEG5 [1] phi from @1 to main [phi:@1->main]
jsr main
//SEG6 @end
//SEG7 main
main: {
//SEG8 main::@1
b1:
//SEG9 [2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_inc__star_cowo1
inc BGCOL
//SEG10 [3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_dec__star_cowo1
dec BGCOL
//SEG11 [4] if(true) goto main::@1 [ ] ( main:0 [ ] ) -- true_then_la1
jmp b1
//SEG12 main::@return
//SEG13 [5] return [ ] ( main:0 [ ] )
rts
}
FINAL SYMBOL TABLE
(label) @1
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(void()) main()
(label) main::@1
(label) main::@return
FINAL CODE
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
.const BGCOL = $d020
//SEG2 @begin
//SEG3 @1
//SEG4 [0] call main param-assignment [ ] ( )
//SEG5 [1] phi from @1 to main [phi:@1->main]
jsr main
//SEG6 @end
//SEG7 main
main: {
//SEG8 main::@1
b1:
//SEG9 [2] *((const byte*) BGCOL#0) ← ++ *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_inc__star_cowo1
inc BGCOL
//SEG10 [3] *((const byte*) BGCOL#0) ← -- *((const byte*) BGCOL#0) [ ] ( main:0 [ ] ) -- _star_cowo1=_dec__star_cowo1
dec BGCOL
//SEG11 [4] if(true) goto main::@1 [ ] ( main:0 [ ] ) -- true_then_la1
jmp b1
//SEG12 main::@return
//SEG13 [5] return [ ] ( main:0 [ ] )
rts
}

View File

@ -0,0 +1,9 @@
(label) @1
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = (word) 53280
(void()) main()
(label) main::@1
(label) main::@return

View File

@ -48,12 +48,12 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
[17] return [ ] ( main:0::rvaluevar:4 [ ] )
to:@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
[18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#1 ] )
[20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#1 rvaluevar::screen#1 ] )
to:rvaluevar::@1
rvalue: scope:[rvalue] from main::@1
[21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] )
[21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] )
[22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] )
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2

View File

@ -106,18 +106,17 @@ lvalue::@return:
endproc // lvalue()
proc (void()) rvalue()
(byte[1024]) rvalue::SCREEN ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$1
(byte) rvalue::i ← (byte) 2
rvalue::@1:
(boolean~) rvalue::$2 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$1) goto rvalue::@2
goto rvalue::@3
rvalue::@2:
(byte~) rvalue::$3 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$2
(byte) rvalue::i ← ++ (byte) rvalue::i
goto rvalue::@1
rvalue::@3:
@ -149,8 +148,7 @@ rvaluevar::@1:
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
goto rvaluevar::@3
rvaluevar::@2:
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen
(byte) rvaluevar::b ← (byte~) rvaluevar::$1
(byte) rvaluevar::b ← *((byte*) rvaluevar::screen)
(byte*) rvaluevar::screen ← ++ (byte*) rvaluevar::screen
(byte) rvaluevar::i ← ++ (byte) rvaluevar::i
goto rvaluevar::@1
@ -186,9 +184,8 @@ SYMBOLS
(label) main::@return
(void()) rvalue()
(byte~) rvalue::$0
(byte~) rvalue::$1
(boolean~) rvalue::$2
(byte~) rvalue::$3
(boolean~) rvalue::$1
(byte~) rvalue::$2
(label) rvalue::@1
(label) rvalue::@2
(label) rvalue::@3
@ -198,7 +195,6 @@ SYMBOLS
(byte) rvalue::i
(void()) rvaluevar()
(boolean~) rvaluevar::$0
(byte~) rvaluevar::$1
(label) rvaluevar::@1
(label) rvaluevar::@2
(label) rvaluevar::@3
@ -250,19 +246,18 @@ lvalue::@return: scope:[lvalue] from lvalue::@3
to:@3
rvalue: scope:[rvalue] from
(byte[1024]) rvalue::SCREEN ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$1
(byte) rvalue::i ← (byte) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(boolean~) rvalue::$2 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$1) goto rvalue::@2
to:rvalue::@4
rvalue::@2: scope:[rvalue] from rvalue::@1 rvalue::@5
(byte~) rvalue::$3 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$2
(byte) rvalue::i ← ++ (byte) rvalue::i
to:rvalue::@1
rvalue::@4: scope:[rvalue] from rvalue::@1
@ -314,8 +309,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
to:rvaluevar::@4
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1 rvaluevar::@5
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen
(byte) rvaluevar::b ← (byte~) rvaluevar::$1
(byte) rvaluevar::b ← *((byte*) rvaluevar::screen)
(byte*) rvaluevar::screen ← ++ (byte*) rvaluevar::screen
(byte) rvaluevar::i ← ++ (byte) rvaluevar::i
to:rvaluevar::@1
@ -386,19 +380,18 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from
(byte[1024]) rvalue::SCREEN ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$1
(byte) rvalue::i ← (byte) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(boolean~) rvalue::$2 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$1) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte~) rvalue::$3 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$2
(byte) rvalue::i ← ++ (byte) rvalue::i
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -430,8 +423,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen
(byte) rvaluevar::b ← (byte~) rvaluevar::$1
(byte) rvaluevar::b ← *((byte*) rvaluevar::screen)
(byte*) rvaluevar::screen ← ++ (byte*) rvaluevar::screen
(byte) rvaluevar::i ← ++ (byte) rvaluevar::i
to:rvaluevar::@1
@ -484,19 +476,18 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN
(byte) rvalue::b ← *((byte[1024]) rvalue::SCREEN)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN *idx (byte) 1
(byte) rvalue::b ← (byte~) rvalue::$1
(byte) rvalue::i ← (byte) 2
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
(boolean~) rvalue::$2 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i < (byte) 10
if((boolean~) rvalue::$1) goto rvalue::@2
to:rvalue::@return
rvalue::@2: scope:[rvalue] from rvalue::@1
(byte~) rvalue::$3 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN *idx (byte) rvalue::i
(byte) rvalue::b ← (byte~) rvalue::$2
(byte) rvalue::i ← ++ (byte) rvalue::i
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -528,8 +519,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen
(byte) rvaluevar::b ← (byte~) rvaluevar::$1
(byte) rvaluevar::b ← *((byte*) rvaluevar::screen)
(byte*) rvaluevar::screen ← ++ (byte*) rvaluevar::screen
(byte) rvaluevar::i ← ++ (byte) rvaluevar::i
to:rvaluevar::@1
@ -588,23 +578,22 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$1
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$0
(byte) rvalue::i#0 ← (byte) 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::$2 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$1) 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::$3 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3
(byte) rvalue::b#2 ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3
(byte) rvalue::b#2 ← (byte~) rvalue::$2
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#3
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -646,8 +635,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::i#3 ← phi( rvaluevar::@1/(byte) rvaluevar::i#2 )
(byte*) rvaluevar::screen#2 ← phi( rvaluevar::@1/(byte*) rvaluevar::screen#3 )
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← (byte~) rvaluevar::$1
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#3
to:rvaluevar::@1
@ -704,23 +692,22 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$1
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$0
(byte) rvalue::i#0 ← (byte) 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::$2 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$1) 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::$3 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3
(byte) rvalue::b#2 ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3
(byte) rvalue::b#2 ← (byte~) rvalue::$2
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#3
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -762,8 +749,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::i#3 ← phi( rvaluevar::@1/(byte) rvaluevar::i#2 )
(byte*) rvaluevar::screen#2 ← phi( rvaluevar::@1/(byte*) rvaluevar::screen#3 )
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← (byte~) rvaluevar::$1
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#3
to:rvaluevar::@1
@ -823,9 +809,8 @@ INITIAL SSA SYMBOL TABLE
(label) main::@return
(void()) rvalue()
(byte~) rvalue::$0
(byte~) rvalue::$1
(boolean~) rvalue::$2
(byte~) rvalue::$3
(boolean~) rvalue::$1
(byte~) rvalue::$2
(label) rvalue::@1
(label) rvalue::@2
(label) rvalue::@return
@ -844,7 +829,6 @@ INITIAL SSA SYMBOL TABLE
(byte) rvalue::i#3
(void()) rvaluevar()
(boolean~) rvaluevar::$0
(byte~) rvaluevar::$1
(label) rvaluevar::@1
(label) rvaluevar::@2
(label) rvaluevar::@return
@ -905,23 +889,22 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte~) rvalue::$0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← (byte~) rvalue::$0
(byte~) rvalue::$1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$1
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte~) rvalue::$0 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::b#1 ← (byte~) rvalue::$0
(byte) rvalue::i#0 ← (byte) 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::$2 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$1) 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::$3 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3
(byte) rvalue::b#2 ← (byte~) rvalue::$3
(byte~) rvalue::$2 ← (byte[1024]) rvalue::SCREEN#1 *idx (byte) rvalue::i#3
(byte) rvalue::b#2 ← (byte~) rvalue::$2
(byte) rvalue::i#1 ← ++ (byte) rvalue::i#3
to:rvalue::@1
rvalue::@return: scope:[rvalue] from rvalue::@1
@ -963,8 +946,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::i#3 ← phi( rvaluevar::@1/(byte) rvaluevar::i#2 )
(byte*) rvaluevar::screen#2 ← phi( rvaluevar::@1/(byte*) rvaluevar::screen#3 )
(byte~) rvaluevar::$1 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← (byte~) rvaluevar::$1
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#3
to:rvaluevar::@1
@ -978,17 +960,15 @@ 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#0 = (byte~) rvalue::$0
Alias (byte) rvalue::b#1 = (byte~) rvalue::$1
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::$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
Alias (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#3
Alias (byte) rvaluevar::i#2 = (byte) rvaluevar::i#3
Alias (byte) rvaluevar::b#0 = (byte~) rvaluevar::$1
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -1029,15 +1009,15 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte) rvalue::b#0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::i#0 ← (byte) 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::$2 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$1) 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
@ -1077,7 +1057,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1132,15 +1112,15 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte) rvalue::b#0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::i#0 ← (byte) 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::$2 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$1) 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
@ -1180,7 +1160,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1234,14 +1214,14 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte) rvalue::b#0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::i#0 ← (byte) 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::$2 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$2) goto rvalue::@2
(boolean~) rvalue::$1 ← (byte) rvalue::i#2 < (byte) 10
if((boolean~) rvalue::$1) 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
@ -1280,7 +1260,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((boolean~) rvaluevar::$0) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1293,7 +1273,7 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
@end: scope:[] from @5
Simple Condition (boolean~) lvalue::$0 if((byte) lvalue::i#2<(byte) 10) goto lvalue::@2
Simple Condition (boolean~) rvalue::$2 if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2
Simple Condition (boolean~) rvalue::$1 if((byte) rvalue::i#2<(byte) 10) goto rvalue::@2
Simple Condition (boolean~) lvaluevar::$0 if((byte) lvaluevar::i#2<(byte) 10) goto lvaluevar::@2
Simple Condition (boolean~) rvaluevar::$0 if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
@ -1334,7 +1314,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
to:@return
rvalue: scope:[rvalue] from main::@1
(byte[1024]) rvalue::SCREEN#0 ← (word) 1024
(byte) rvalue::b#0 ← * (byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
(byte) rvalue::i#0 ← (byte) 2
to:rvalue::@1
@ -1377,7 +1357,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1433,7 +1413,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return
to:@return
rvalue: scope:[rvalue] from main::@1
(byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← (const byte[1024]) rvalue::SCREEN#0 *idx (byte) 1
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -1470,7 +1450,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1520,7 +1500,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return
to:@return
rvalue: scope:[rvalue] from main::@1
(byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -1557,7 +1537,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1624,7 +1604,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1
return
to:@return
rvalue: scope:[rvalue] from main::@1
(byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -1661,7 +1641,7 @@ rvaluevar::@1: scope:[rvaluevar] from rvaluevar rvaluevar::@2
if((byte) rvaluevar::i#2<(byte) 10) goto rvaluevar::@2
to:rvaluevar::@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
to:rvaluevar::@1
@ -1781,14 +1761,14 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
return
to:@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
(byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2
(byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2)
(byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2
(byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2
(byte~) rvaluevar::i#4 ← (byte) rvaluevar::i#1
(byte*~) rvaluevar::screen#4 ← (byte*) rvaluevar::screen#1
to:rvaluevar::@1
rvalue: scope:[rvalue] from main::@1
(byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0
(byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0)
(byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -1884,14 +1864,14 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
[19] return [ ]
to:@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
[20] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ]
[20] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ]
[21] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ]
[22] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::screen#1 rvaluevar::i#1 ]
[23] (byte~) rvaluevar::i#4 ← (byte) rvaluevar::i#1 [ rvaluevar::i#4 rvaluevar::screen#1 ]
[24] (byte*~) rvaluevar::screen#4 ← (byte*) rvaluevar::screen#1 [ rvaluevar::i#4 rvaluevar::screen#4 ]
to:rvaluevar::@1
rvalue: scope:[rvalue] from main::@1
[25] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ]
[25] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ]
[26] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ]
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -1990,12 +1970,12 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
[17] return [ ]
to:@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
[18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ]
[18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ]
[19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ]
[20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ]
to:rvaluevar::@1
rvalue: scope:[rvalue] from main::@1
[21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ]
[21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ]
[22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ]
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -2076,12 +2056,12 @@ rvaluevar::@return: scope:[rvaluevar] from rvaluevar::@1
[17] return [ ] ( main:0::rvaluevar:4 [ ] )
to:@return
rvaluevar::@2: scope:[rvaluevar] from rvaluevar::@1
[18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] )
[19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#1 ] )
[20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#1 rvaluevar::screen#1 ] )
to:rvaluevar::@1
rvalue: scope:[rvalue] from main::@1
[21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] )
[21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] )
[22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] )
to:rvalue::@1
rvalue::@1: scope:[rvalue] from rvalue rvalue::@2
@ -2200,7 +2180,7 @@ VARIABLE REGISTER WEIGHTS
(byte) rvaluevar::i#2 8.25
(byte*) rvaluevar::screen
(byte*) rvaluevar::screen#1 11.0
(byte*) rvaluevar::screen#2 11.0
(byte*) rvaluevar::screen#2 7.333333333333333
Initial phi equivalence classes
[ lvaluevar::i#2 lvaluevar::i#1 ]
@ -2356,7 +2336,7 @@ rvaluevar: {
rts
//SEG42 rvaluevar::@2
b2:
//SEG43 [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- zpby1=_star_zpptrby1
//SEG43 [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- zpby1=_star_zpptrby1
ldy #0
lda (screen),y
sta b
@ -2380,7 +2360,7 @@ rvalue: {
.label b_1 = $c
.label b_2 = $d
.label i = 8
//SEG50 [21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] ) -- zpby1=_star_cowo1
//SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- zpby1=_star_cowo1
lda SCREEN
sta b
//SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- zpby1=_star_cowo1
@ -2461,7 +2441,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [11] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ]
Statement [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ]
Statement [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a
@ -2469,7 +2449,7 @@ Statement [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ]
Statement [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ]
Statement [11] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:0::lvaluevar:5 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [28] *((const byte[1024]) lvalue::SCREEN#0) ← (byte) 1 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a
Statement [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] ( main:0::lvalue:2 [ ] ) always clobbers reg byte a
Statement [33] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] ( main:0::lvalue:2 [ lvalue::i#2 ] ) always clobbers reg byte a
@ -2486,7 +2466,7 @@ Potential registers zp ZP_BYTE:13 [ rvalue::b#2 ] : zp ZP_BYTE:13 , reg byte a ,
REGISTER UPLIFT SCOPES
Uplift Scope [rvalue] 110: zp ZP_BYTE:13 [ rvalue::b#2 ] 36.67: zp ZP_BYTE:8 [ rvalue::i#2 rvalue::i#1 ] 20: zp ZP_BYTE:11 [ rvalue::b#0 ] 20: zp ZP_BYTE:12 [ rvalue::b#1 ]
Uplift Scope [rvaluevar] 110: zp ZP_BYTE:10 [ rvaluevar::b#0 ] 30.25: zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] 22: zp ZP_PTR_BYTE:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift Scope [rvaluevar] 110: zp ZP_BYTE:10 [ rvaluevar::b#0 ] 30.25: zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] 18.33: zp ZP_PTR_BYTE:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift Scope [lvaluevar] 30.25: zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] 22: zp ZP_PTR_BYTE:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift Scope [lvalue] 36.67: zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ]
Uplift Scope [main]
@ -2620,7 +2600,7 @@ rvaluevar: {
rts
//SEG42 rvaluevar::@2
b2:
//SEG43 [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
//SEG43 [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
ldy #0
lda (screen),y
//SEG44 [19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#1 ] ) -- zpptrby1=_inc_zpptrby1
@ -2639,7 +2619,7 @@ rvaluevar: {
//SEG49 rvalue
rvalue: {
.const SCREEN = $400
//SEG50 [21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
//SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN
//SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN+1
@ -2808,7 +2788,7 @@ rvaluevar: {
rts
//SEG42 rvaluevar::@2
b2:
//SEG43 [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
//SEG43 [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
ldy #0
lda (screen),y
//SEG44 [19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#1 ] ) -- zpptrby1=_inc_zpptrby1
@ -2827,7 +2807,7 @@ rvaluevar: {
//SEG49 rvalue
rvalue: {
.const SCREEN = $400
//SEG50 [21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
//SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN
//SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN+1
@ -2999,7 +2979,7 @@ rvaluevar: {
rts
//SEG42 rvaluevar::@2
b2:
//SEG43 [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
//SEG43 [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
ldy #0
lda (screen),y
//SEG44 [19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#1 ] ) -- zpptrby1=_inc_zpptrby1
@ -3017,7 +2997,7 @@ rvaluevar: {
//SEG49 rvalue
rvalue: {
.const SCREEN = $400
//SEG50 [21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
//SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN
//SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN+1
@ -3128,7 +3108,7 @@ FINAL SYMBOL TABLE
(byte) rvaluevar::i#2 reg byte x 8.25
(byte*) rvaluevar::screen
(byte*) rvaluevar::screen#1 screen zp ZP_PTR_BYTE:2 11.0
(byte*) rvaluevar::screen#2 screen zp ZP_PTR_BYTE:2 11.0
(byte*) rvaluevar::screen#2 screen zp ZP_PTR_BYTE:2 7.333333333333333
reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ]
zp ZP_PTR_BYTE:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ]
@ -3230,7 +3210,7 @@ rvaluevar: {
rts
//SEG42 rvaluevar::@2
b2:
//SEG43 [18] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
//SEG43 [18] (byte) rvaluevar::b#0 ← *((byte*) rvaluevar::screen#2) [ rvaluevar::i#2 rvaluevar::screen#2 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#2 ] ) -- aby=_star_zpptrby1
ldy #0
lda (screen),y
//SEG44 [19] (byte*) rvaluevar::screen#1 ← ++ (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#1 ] ( main:0::rvaluevar:4 [ rvaluevar::i#2 rvaluevar::screen#1 ] ) -- zpptrby1=_inc_zpptrby1
@ -3248,7 +3228,7 @@ rvaluevar: {
//SEG49 rvalue
rvalue: {
.const SCREEN = $400
//SEG50 [21] (byte) rvalue::b#0 ← * (const byte[1024]) rvalue::SCREEN#0 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
//SEG50 [21] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN
//SEG51 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] ( main:0::rvalue:3 [ ] ) -- aby=_star_cowo1
lda SCREEN+1

View File

@ -51,7 +51,7 @@
(byte) rvaluevar::i#2 reg byte x 8.25
(byte*) rvaluevar::screen
(byte*) rvaluevar::screen#1 screen zp ZP_PTR_BYTE:2 11.0
(byte*) rvaluevar::screen#2 screen zp ZP_PTR_BYTE:2 11.0
(byte*) rvaluevar::screen#2 screen zp ZP_PTR_BYTE:2 7.333333333333333
reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ]
zp ZP_PTR_BYTE:2 [ lvaluevar::screen#2 lvaluevar::screen#1 rvaluevar::screen#2 rvaluevar::screen#1 ]

View File

@ -10,11 +10,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
[2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] )
[2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] )
[3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] )
[3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] )
[4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] )
to:main::@3
main::@3: scope:[main] from main::@1
[5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] )
[5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[6] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const byte[]) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:0 [ main::i#2 main::c#2 main::nxt#4 ] )

View File

@ -26,14 +26,12 @@ proc (void()) main()
(byte*) main::nxt ← (byte[]) TEXT
(byte) main::i ← (byte) 0
main::@1:
(byte~) main::$0 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c ← *((byte*) main::nxt)
(boolean~) main::$0 ← (byte) main::c == (byte) '@'
(boolean~) main::$1 ← ! (boolean~) main::$0
if((boolean~) main::$1) goto main::@2
(byte*) main::nxt ← (byte[]) TEXT
(byte~) main::$3 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$3
(byte) main::c ← *((byte*) main::nxt)
main::@2:
(byte) main::i ← ++ (byte) main::i
*((byte*) SCREEN + (byte) main::i) ← (byte) main::c
@ -49,10 +47,8 @@ SYMBOLS
(byte*) SCROLL
(byte[]) TEXT
(void()) main()
(byte~) main::$0
(boolean~) main::$0
(boolean~) main::$1
(boolean~) main::$2
(byte~) main::$3
(label) main::@1
(label) main::@2
(label) main::@return
@ -71,11 +67,10 @@ main: scope:[main] from
(byte) main::i ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte~) main::$0 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c ← *((byte*) main::nxt)
(boolean~) main::$0 ← (byte) main::c == (byte) '@'
(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
@ -85,8 +80,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@4
main::@3: scope:[main] from main::@1
(byte*) main::nxt ← (byte[]) TEXT
(byte~) main::$3 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$3
(byte) main::c ← *((byte*) main::nxt)
to:main::@2
main::@4: scope:[main] from main::@2
to:main::@return
@ -110,11 +104,10 @@ main: scope:[main] from
(byte) main::i ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte~) main::$0 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c ← *((byte*) main::nxt)
(boolean~) main::$0 ← (byte) main::c == (byte) '@'
(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
@ -124,8 +117,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt ← (byte[]) TEXT
(byte~) main::$3 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$3
(byte) main::c ← *((byte*) main::nxt)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -148,11 +140,10 @@ main: scope:[main] from @1
(byte) main::i ← (byte) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte~) main::$0 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c ← *((byte*) main::nxt)
(boolean~) main::$0 ← (byte) main::c == (byte) '@'
(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
@ -162,8 +153,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt ← (byte[]) TEXT
(byte~) main::$3 ← * (byte*) main::nxt
(byte) main::c ← (byte~) main::$3
(byte) main::c ← *((byte*) main::nxt)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -196,11 +186,10 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte~) main::$0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c#0 == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$0 ← (byte) main::c#0 == (byte) '@'
(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[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
@ -218,8 +207,7 @@ main::@3: scope:[main] from main::@1
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte~) main::$3 ← * (byte*) main::nxt#2
(byte) main::c#1 ← (byte~) main::$3
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -250,11 +238,10 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte~) main::$0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c#0 == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$0 ← (byte) main::c#0 == (byte) '@'
(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[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
@ -272,8 +259,7 @@ main::@3: scope:[main] from main::@1
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte~) main::$3 ← * (byte*) main::nxt#2
(byte) main::c#1 ← (byte~) main::$3
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -309,10 +295,8 @@ 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
(label) main::@1
(label) main::@2
(label) main::@3
@ -353,11 +337,10 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte~) main::$0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← (byte~) main::$0
(boolean~) main::$1 ← (byte) main::c#0 == (byte) '@'
(boolean~) main::$2 ← ! (boolean~) main::$1
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$0 ← (byte) main::c#0 == (byte) '@'
(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[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
@ -375,8 +358,7 @@ main::@3: scope:[main] from main::@1
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte~) main::$3 ← * (byte*) main::nxt#2
(byte) main::c#1 ← (byte~) main::$3
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -388,7 +370,7 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Inversing boolean not (boolean~) main::$2 ← (byte) main::c#0 != (byte) '@' from (boolean~) main::$1 ← (byte) main::c#0 == (byte) '@'
Inversing boolean not (boolean~) main::$1 ← (byte) main::c#0 != (byte) '@' from (boolean~) main::$0 ← (byte) main::c#0 == (byte) '@'
Succesful SSA optimization Pass2UnaryNotSimplification
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -407,10 +389,9 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#4 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte~) main::$0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← (byte~) main::$0
(boolean~) main::$2 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$1 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#4 main::@3/(byte[]) TEXT#2 )
@ -428,8 +409,7 @@ main::@3: scope:[main] from main::@1
(byte) main::i#4 ← phi( main::@1/(byte) main::i#3 )
(byte[]) TEXT#2 ← phi( main::@1/(byte[]) TEXT#4 )
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte~) main::$3 ← * (byte*) main::nxt#2
(byte) main::c#1 ← (byte~) main::$3
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -445,11 +425,9 @@ Not aliassing across scopes: main::nxt#0 TEXT#1
Not aliassing across scopes: main::nxt#2 TEXT#2
Alias (byte[]) TEXT#0 = (byte[]) TEXT#1 (byte[]) TEXT#3
Alias (byte*) SCREEN#0 = (byte*) SCREEN#4 (byte*) SCREEN#5
Alias (byte) main::c#0 = (byte~) main::$0
Alias (byte[]) TEXT#2 = (byte[]) TEXT#4
Alias (byte) main::i#3 = (byte) main::i#4
Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
Alias (byte) main::c#1 = (byte~) main::$3
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -466,9 +444,9 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#0 main::@2/(byte*) SCREEN#1 )
(byte) main::i#3 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(boolean~) main::$2 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$1 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte[]) TEXT#5 ← phi( main::@1/(byte[]) TEXT#2 main::@3/(byte[]) TEXT#2 )
@ -483,7 +461,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte) main::c#1 ← * (byte*) main::nxt#2
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -514,9 +492,9 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 main::@2/(byte*) SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(boolean~) main::$2 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$1 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
@ -528,7 +506,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte) main::c#1 ← * (byte*) main::nxt#2
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -558,9 +536,9 @@ main::@1: scope:[main] from main main::@2
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#0 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(boolean~) main::$2 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$1 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
@ -572,7 +550,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#2
(byte) main::c#1 ← * (byte*) main::nxt#2
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -598,9 +576,9 @@ 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::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(boolean~) main::$2 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$2) goto main::@2
(byte) main::c#0 ← *((byte*) main::nxt#3)
(boolean~) main::$1 ← (byte) main::c#0 != (byte) '@'
if((boolean~) main::$1) goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
(byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(byte*) main::nxt#2 )
@ -612,7 +590,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← * (byte*) main::nxt#2
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -622,7 +600,7 @@ main::@return: scope:[main] from main::@2
to:@end
@end: scope:[] from @1
Simple Condition (boolean~) main::$2 if((byte) main::c#0!=(byte) '@') goto main::@2
Simple Condition (boolean~) main::$1 if((byte) main::c#0!=(byte) '@') goto main::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH
@begin: scope:[] from
@ -637,7 +615,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::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← *((byte*) main::nxt#3)
if((byte) main::c#0!=(byte) '@') goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
@ -650,7 +628,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (byte[]) TEXT#0
(byte) main::c#1 ← * (byte*) main::nxt#2
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -674,7 +652,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::nxt#3 ← phi( main/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← *((byte*) main::nxt#3)
if((byte) main::c#0!=(byte) '@') goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
@ -687,7 +665,7 @@ main::@2: scope:[main] from main::@1 main::@3
to:main::@return
main::@3: scope:[main] from main::@1
(byte*) main::nxt#2 ← (const byte[]) TEXT#0
(byte) main::c#1 ← * (byte*) main::nxt#2
(byte) main::c#1 ← *((byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -708,7 +686,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::nxt#3 ← phi( main/(const byte*) main::nxt#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← *((byte*) main::nxt#3)
if((byte) main::c#0!=(byte) '@') goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
@ -720,7 +698,7 @@ main::@2: scope:[main] from main::@1 main::@3
if(true) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::c#1 ← * (const byte*) main::nxt#2
(byte) main::c#1 ← *((const byte*) main::nxt#2)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -750,7 +728,7 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
(byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 )
(byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← *((byte*) main::nxt#3)
if((byte) main::c#0!=(byte) '@') goto main::@2
to:main::@3
main::@2: scope:[main] from main::@1 main::@3
@ -762,7 +740,7 @@ main::@2: scope:[main] from main::@1 main::@3
if(true) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@1
(byte) main::c#1 ← * (const byte[]) TEXT#0
(byte) main::c#1 ← *((const byte[]) TEXT#0)
to:main::@2
main::@return: scope:[main] from main::@2
return
@ -815,11 +793,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@5
(byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 )
(byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@5/(byte*~) main::nxt#5 )
(byte) main::c#0 ← * (byte*) main::nxt#3
(byte) main::c#0 ← *((byte*) main::nxt#3)
if((byte) main::c#0!=(byte) '@') goto main::@6
to:main::@3
main::@3: scope:[main] from main::@1
(byte) main::c#1 ← * (const byte[]) TEXT#0
(byte) main::c#1 ← *((const byte[]) TEXT#0)
(byte~) main::c#4 ← (byte) main::c#1
to:main::@2
main::@2: scope:[main] from main::@3 main::@6
@ -865,11 +843,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@5
[2] (byte) main::i#2 ← phi( main/(byte) 0 main::@5/(byte~) main::i#5 ) [ main::nxt#3 main::i#2 ]
[2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@5/(byte*~) main::nxt#5 ) [ main::nxt#3 main::i#2 ]
[3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ]
[3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ]
[4] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::i#2 main::c#0 ]
to:main::@3
main::@3: scope:[main] from main::@1
[5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ]
[5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ]
[6] (byte~) main::c#4 ← (byte) main::c#1 [ main::i#2 main::c#4 ]
to:main::@2
main::@2: scope:[main] from main::@3 main::@6
@ -921,11 +899,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
[2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ]
[2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ]
[3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ]
[3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ]
[4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ]
to:main::@3
main::@3: scope:[main] from main::@1
[5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ]
[5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ]
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[6] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const byte[]) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ]
@ -952,11 +930,11 @@ main: scope:[main] from @1
main::@1: scope:[main] from main main::@2
[2] (byte) main::i#2 ← phi( main/(byte) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] )
[2] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:0 [ main::nxt#3 main::i#2 ] )
[3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] )
[3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] )
[4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] )
to:main::@3
main::@3: scope:[main] from main::@1
[5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] )
[5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
[6] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const byte[]) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:0 [ main::i#2 main::c#2 main::nxt#4 ] )
@ -1006,7 +984,7 @@ VARIABLE REGISTER WEIGHTS
(byte) main::i#2 4.4
(byte*) main::nxt
(byte*) main::nxt#1 11.0
(byte*) main::nxt#3 11.0
(byte*) main::nxt#3 7.333333333333333
(byte*) main::nxt#4 7.333333333333333
Initial phi equivalence classes
@ -1064,7 +1042,7 @@ main: {
jmp b1
//SEG14 main::@1
b1:
//SEG15 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- zpby1=_star_zpptrby1
//SEG15 [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- zpby1=_star_zpptrby1
ldy #0
lda (nxt),y
sta c
@ -1075,7 +1053,7 @@ main: {
jmp b3
//SEG17 main::@3
b3:
//SEG18 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- zpby1=_star_cowo1
//SEG18 [5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- zpby1=_star_cowo1
lda TEXT
sta c
//SEG19 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
@ -1115,16 +1093,16 @@ main: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) always clobbers reg byte a reg byte y
Statement [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) always clobbers reg byte a reg byte y
Statement [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) always clobbers reg byte a reg byte y
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x ,
Potential registers zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] : zp ZP_PTR_BYTE:4 ,
REGISTER UPLIFT SCOPES
Uplift Scope [main] 55: zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ] 29.33: zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] 12.65: zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Uplift Scope [main] 55: zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ] 25.67: zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] 12.65: zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Uplift Scope []
Uplifting [main] best 870 combination reg byte y [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] reg byte x [ main::i#2 main::i#1 ]
@ -1175,7 +1153,7 @@ main: {
//SEG13 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG14 main::@1
b1:
//SEG15 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
//SEG15 [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
ldy #0
lda (nxt),y
tay
@ -1184,7 +1162,7 @@ main: {
bne b2_from_b1
//SEG17 main::@3
b3:
//SEG18 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
//SEG18 [5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
ldy TEXT
//SEG19 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
b2_from_b3:
@ -1261,7 +1239,7 @@ main: {
//SEG13 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG14 main::@1
b1:
//SEG15 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
//SEG15 [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
ldy #0
lda (nxt),y
tay
@ -1270,7 +1248,7 @@ main: {
bne b2
//SEG17 main::@3
b3:
//SEG18 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
//SEG18 [5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
ldy TEXT
//SEG19 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
b2_from_b3:
@ -1343,7 +1321,7 @@ main: {
//SEG13 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG14 main::@1
b1:
//SEG15 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
//SEG15 [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
ldy #0
lda (nxt),y
tay
@ -1351,7 +1329,7 @@ main: {
cpy #'@'
bne b2
//SEG17 main::@3
//SEG18 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
//SEG18 [5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
ldy TEXT
//SEG19 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
//SEG20 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1
@ -1417,7 +1395,7 @@ main: {
//SEG13 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG14 main::@1
b1:
//SEG15 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
//SEG15 [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
ldy #0
lda (nxt),y
tay
@ -1425,7 +1403,7 @@ main: {
cpy #'@'
bne b2
//SEG17 main::@3
//SEG18 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
//SEG18 [5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
ldy TEXT
//SEG19 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
//SEG20 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1
@ -1480,7 +1458,7 @@ FINAL SYMBOL TABLE
(byte) main::i#2 reg byte x 4.4
(byte*) main::nxt
(byte*) main::nxt#1 nxt zp ZP_PTR_BYTE:2 11.0
(byte*) main::nxt#3 nxt zp ZP_PTR_BYTE:2 11.0
(byte*) main::nxt#3 nxt zp ZP_PTR_BYTE:2 7.333333333333333
(byte*) main::nxt#4 nxt zp ZP_PTR_BYTE:2 7.333333333333333
reg byte x [ main::i#2 main::i#1 ]
@ -1518,7 +1496,7 @@ main: {
//SEG13 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG14 main::@1
b1:
//SEG15 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
//SEG15 [3] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:0 [ main::nxt#3 main::i#2 main::c#0 ] ) -- yby=_star_zpptrby1
ldy #0
lda (nxt),y
tay
@ -1526,7 +1504,7 @@ main: {
cpy #'@'
bne b2
//SEG17 main::@3
//SEG18 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
//SEG18 [5] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:0 [ main::i#2 main::c#1 ] ) -- yby=_star_cowo1
ldy TEXT
//SEG19 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
//SEG20 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1

View File

@ -21,7 +21,7 @@
(byte) main::i#2 reg byte x 4.4
(byte*) main::nxt
(byte*) main::nxt#1 nxt zp ZP_PTR_BYTE:2 11.0
(byte*) main::nxt#3 nxt zp ZP_PTR_BYTE:2 11.0
(byte*) main::nxt#3 nxt zp ZP_PTR_BYTE:2 7.333333333333333
(byte*) main::nxt#4 nxt zp ZP_PTR_BYTE:2 7.333333333333333
reg byte x [ main::i#2 main::i#1 ]

View File

@ -11,61 +11,57 @@ main: scope:[main] from @2
main::@2: scope:[main] from main main::@2 main::@4
[3] (byte*) main::nxt#9 ← phi( main::@4/(byte*) main::nxt#10 main/(const byte*) TEXT#0 ) [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
[3] (byte) main::scroll#7 ← phi( main::@4/(byte) main::scroll#10 main/(byte) 7 ) [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
[4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#7 main::nxt#9 main::$2 ] ( main:0 [ main::scroll#7 main::nxt#9 main::$2 ] )
[5] if((byte~) main::$2!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
[4] if(*((const byte*) RASTER#0)!=(byte) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
to:main::@3
main::@3: scope:[main] from main::@2 main::@3
[6] (byte~) main::$4 ← * (const byte*) RASTER#0 [ main::scroll#7 main::nxt#9 main::$4 ] ( main:0 [ main::scroll#7 main::nxt#9 main::$4 ] )
[7] if((byte~) main::$4!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
[5] if(*((const byte*) RASTER#0)!=(byte) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
to:main::@8
main::@8: scope:[main] from main::@3
[8] (byte~) main::$6 ← * (const byte*) BGCOL#0 [ main::scroll#7 main::nxt#9 main::$6 ] ( main:0 [ main::scroll#7 main::nxt#9 main::$6 ] )
[9] (byte~) main::$7 ← (byte~) main::$6 + (byte) 1 [ main::scroll#7 main::nxt#9 main::$7 ] ( main:0 [ main::scroll#7 main::nxt#9 main::$7 ] )
[10] *((const byte*) BGCOL#0) ← (byte~) main::$7 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
[11] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] )
[12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] )
[6] (byte~) main::$4 ← *((const byte*) BGCOL#0) + (byte) 1 [ main::scroll#7 main::nxt#9 main::$4 ] ( main:0 [ main::scroll#7 main::nxt#9 main::$4 ] )
[7] *((const byte*) BGCOL#0) ← (byte~) main::$4 [ main::scroll#7 main::nxt#9 ] ( main:0 [ main::scroll#7 main::nxt#9 ] )
[8] (byte) main::scroll#1 ← -- (byte) main::scroll#7 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] )
[9] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#9 main::scroll#1 ] ( main:0 [ main::nxt#9 main::scroll#1 ] )
to:main::@5
main::@5: scope:[main] from main::@5 main::@8
[13] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte) 0 ) [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] )
[14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$11 ] ( main:0 [ main::nxt#9 main::i#2 main::$11 ] )
[15] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$11 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] )
[16] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] )
[17] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] )
[10] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte) 0 ) [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] )
[11] (byte~) main::$8 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#9 main::i#2 main::$8 ] ( main:0 [ main::nxt#9 main::i#2 main::$8 ] )
[12] *((const byte[]) main::line#0 + (byte) main::i#2) ← (byte~) main::$8 [ main::nxt#9 main::i#2 ] ( main:0 [ main::nxt#9 main::i#2 ] )
[13] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] )
[14] if((byte) main::i#1!=(byte) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:0 [ main::nxt#9 main::i#1 ] )
to:main::@10
main::@10: scope:[main] from main::@5
[18] (byte) main::c#0 ← * (byte*) main::nxt#9 [ main::nxt#9 main::c#0 ] ( main:0 [ main::nxt#9 main::c#0 ] )
[19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:0 [ main::nxt#9 main::c#0 ] )
[15] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:0 [ main::nxt#9 main::c#0 ] )
[16] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:0 [ main::nxt#9 main::c#0 ] )
to:main::@11
main::@11: scope:[main] from main::@10
[20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] ( main:0 [ main::c#1 ] )
[17] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:0 [ main::c#1 ] )
to:main::@6
main::@6: scope:[main] from main::@10 main::@11
[21] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:0 [ main::c#2 main::nxt#4 ] )
[21] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:0 [ main::c#2 main::nxt#4 ] )
[22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] )
[23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] )
[18] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:0 [ main::c#2 main::nxt#4 ] )
[18] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:0 [ main::c#2 main::nxt#4 ] )
[19] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:0 [ main::nxt#4 ] )
[20] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:0 [ main::nxt#1 ] )
to:main::@4
main::@4: scope:[main] from main::@6 main::@8
[24] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[24] (byte) main::scroll#10 ← phi( main::@6/(byte) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[26] (byte~) main::$17 ← * (const byte*) BGCOL#0 [ main::scroll#10 main::nxt#10 main::$17 ] ( main:0 [ main::scroll#10 main::nxt#10 main::$17 ] )
[27] (byte~) main::$18 ← (byte~) main::$17 - (byte) 1 [ main::scroll#10 main::nxt#10 main::$18 ] ( main:0 [ main::scroll#10 main::nxt#10 main::$18 ] )
[28] *((const byte*) BGCOL#0) ← (byte~) main::$18 [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[29] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[21] (byte*) main::nxt#10 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#9 ) [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[21] (byte) main::scroll#10 ← phi( main::@6/(byte) 7 main::@8/(byte) main::scroll#1 ) [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[22] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[23] (byte~) main::$12 ← *((const byte*) BGCOL#0) - (byte) 1 [ main::scroll#10 main::nxt#10 main::$12 ] ( main:0 [ main::scroll#10 main::nxt#10 main::$12 ] )
[24] *((const byte*) BGCOL#0) ← (byte~) main::$12 [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
[25] if(true) goto main::@2 [ main::scroll#10 main::nxt#10 ] ( main:0 [ main::scroll#10 main::nxt#10 ] )
to:main::@return
main::@return: scope:[main] from main::@4
[30] return [ ] ( main:0 [ ] )
[26] return [ ] ( main:0 [ ] )
to:@return
fillscreen: scope:[fillscreen] from main
[31] phi() [ ] ( main:0::fillscreen:2 [ ] )
[27] phi() [ ] ( main:0::fillscreen:2 [ ] )
to:fillscreen::@1
fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1
[32] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[34] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] )
[35] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] )
[28] (byte*) fillscreen::cursor#2 ← phi( fillscreen/(const byte*) SCREEN#0 fillscreen::@1/(byte*) fillscreen::cursor#1 ) [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[29] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:0::fillscreen:2 [ fillscreen::cursor#2 ] )
[30] (byte*) fillscreen::cursor#1 ← ++ (byte*) fillscreen::cursor#2 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] )
[31] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:0::fillscreen:2 [ fillscreen::cursor#1 ] )
to:fillscreen::@return
fillscreen::@return: scope:[fillscreen] from fillscreen::@1
[36] return [ ] ( main:0::fillscreen:2 [ ] )
[32] return [ ] ( main:0::fillscreen:2 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -21,13 +21,9 @@
(const byte) fillscreen::fill#0 fill = (byte) 32
(byte*) fillscreen::screen
(void()) main()
(byte~) main::$11 reg byte a 202.0
(byte~) main::$17 reg byte a 22.0
(byte~) main::$18 reg byte a 22.0
(byte~) main::$2 reg byte a 202.0
(byte~) main::$4 reg byte a 202.0
(byte~) main::$6 reg byte a 22.0
(byte~) main::$7 reg byte a 22.0
(byte~) main::$12 reg byte a 22.0
(byte~) main::$4 reg byte a 22.0
(byte~) main::$8 reg byte a 202.0
(label) main::@10
(label) main::@11
(label) main::@2
@ -48,22 +44,18 @@
(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte) 40
(byte*) main::nxt
(byte*) main::nxt#1 nxt zp ZP_PTR_BYTE:2 22.0
(byte*) main::nxt#10 nxt zp ZP_PTR_BYTE:2 5.5
(byte*) main::nxt#10 nxt zp ZP_PTR_BYTE:2 6.6000000000000005
(byte*) main::nxt#4 nxt zp ZP_PTR_BYTE:2 11.0
(byte*) main::nxt#9 nxt zp ZP_PTR_BYTE:2 2.588235294117647
(byte*) main::nxt#9 nxt zp ZP_PTR_BYTE:2 2.357142857142857
(byte) main::scroll
(byte) main::scroll#1 reg byte x 16.5
(byte) main::scroll#10 reg byte x 5.5
(byte) main::scroll#7 reg byte x 2.75
(byte) main::scroll#10 reg byte x 6.6000000000000005
(byte) main::scroll#7 reg byte x 4.4
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_PTR_BYTE:2 [ main::nxt#4 main::nxt#9 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ]
reg byte a [ main::$2 ]
reg byte a [ main::$4 ]
reg byte a [ main::$6 ]
reg byte a [ main::$7 ]
reg byte a [ main::$11 ]
reg byte a [ main::$17 ]
reg byte a [ main::$18 ]
reg byte a [ main::$8 ]
reg byte a [ main::$12 ]