1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-29 03:56:15 +00:00

Expanded inline casting to also handle word/pointer casts. Closes #2.

This commit is contained in:
jespergravgaard 2018-01-22 00:31:28 +01:00
parent 1646f9d3ff
commit 15c1108d2c
24 changed files with 1346 additions and 1352 deletions

View File

@ -236,21 +236,29 @@ public class AsmFragmentInstanceSpec {
CastValue castVal = (CastValue) value;
SymbolType toType = castVal.getToType();
value = castVal.getValue();
// Assume cast value is a var-ref
value = program.getSymbolInfos().getVariable((VariableRef) value);
// Find the register
Variable variable = (Variable) value;
Registers.Register register = variable.getAllocation();
// Examine if the register is already bound (with the cast to type) - and reuse it
String bound = findBound(toType, register);
if(bound != null) {
String name = getTypePrefix(toType) + getRegisterName(register);
return name;
} else {
// Bind the register
String name = getTypePrefix(toType) + getRegisterName(register);
// Assume cast value is a symbol-ref
value = program.getSymbolInfos().getSymbol((SymbolRef) value);
if(value instanceof ConstantVar || value instanceof ConstantValue) {
String name = getTypePrefix(toType) + "c" + nextConstByteIdx++;
bindings.put(name, value);
return name;
} else if(value instanceof Variable) {
// Find the register
Variable variable = (Variable) value;
Registers.Register register = variable.getAllocation();
// Examine if the register is already bound (with the cast to type) - and reuse it
String bound = findBound(toType, register);
if(bound != null) {
String name = getTypePrefix(toType) + getRegisterName(register);
return name;
} else {
// Bind the register
String name = getTypePrefix(toType) + getRegisterName(register);
bindings.put(name, value);
return name;
}
} else {
throw new RuntimeException("Unhandled cast to type " + value);
}
} else if(value instanceof ConstantVar || value instanceof ConstantValue) {
SymbolType constType;

View File

@ -30,22 +30,28 @@ public class Pass2NopCastElimination extends Pass2SsaOptimization {
if(assignment.getlValue() instanceof VariableRef && assignment.getrValue1()==null && assignment.getOperator()!=null ) {
// It is a simple cast assignment - check if it is no-op
SymbolType rValType = SymbolTypeInference.inferType(getScope(), assignment.getrValue2());
boolean isSimpleCast = false;
boolean isNopCast = false;
SymbolType toType = null;
if(SymbolType.isByte(rValType) && Operator.CAST_SBYTE.equals(assignment.getOperator())) {
isSimpleCast = true;
isNopCast = true;
toType = SymbolType.SBYTE;
} else if(SymbolType.isSByte(rValType) && Operator.CAST_BYTE.equals(assignment.getOperator())) {
isSimpleCast = true;
isNopCast = true;
toType = SymbolType.BYTE;
} else if(SymbolType.isWord(rValType) && Operator.CAST_SWORD.equals(assignment.getOperator())) {
isSimpleCast = true;
isNopCast = true;
toType = SymbolType.SWORD;
} else if(SymbolType.isSWord(rValType) && Operator.CAST_WORD.equals(assignment.getOperator())) {
isSimpleCast = true;
isNopCast = true;
toType = SymbolType.WORD;
} else if(SymbolType.isWord(rValType) && Operator.CAST_PTRBY.equals(assignment.getOperator())) {
isNopCast = true;
toType = new SymbolTypePointer(SymbolType.BYTE);
} else if(rValType instanceof SymbolTypePointer && Operator.CAST_WORD.equals(assignment.getOperator())) {
isNopCast = true;
toType = SymbolType.WORD;
}
if(isSimpleCast) {
if(isNopCast) {
getLog().append("Eliminating Noop Cast "+assignment.toString(getProgram(), false));
// Add the alias for replacement
castAliasses.put((VariableRef) assignment.getlValue(), new CastValue(toType, assignment.getrValue2()));

View File

@ -103,6 +103,8 @@ public class ValueReplacer {
for(int i = 0; i < size; i++) {
subValues.add(new ReplaceableListElement(valueList, i));
}
} else if(value instanceof CastValue) {
subValues.add(new ReplaceableCastValue((CastValue) value));
}
return subValues;
}
@ -153,6 +155,30 @@ public class ValueReplacer {
}
/**
* Replaceable pointer inside a pointer dererence value.
*/
public static class ReplaceableCastValue extends ReplaceableValue {
private final CastValue castValue;
public ReplaceableCastValue(CastValue castValue) {
this.castValue = castValue;
}
@Override
public RValue get() {
return castValue.getValue();
}
@Override
public void set(RValue val) {
castValue.setValue(val);
}
}
public static class ReplaceableListElement extends ReplaceableValue {
private ValueList list;
private int idx;

View File

@ -221,7 +221,6 @@ plot: {
.label _0 = 8
.label plotter_x = 8
.label plotter_y = $b
.label plotter = 8
lda plot_xhi,x
sta plotter_x+1
lda plot_xlo,x
@ -239,8 +238,8 @@ plot: {
sta _0+1
lda plot_bit,x
ldy #0
ora (plotter),y
sta (plotter),y
ora (_0),y
sta (_0),y
rts
}
line_xdyi: {

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -260,11 +260,10 @@
(label) main::@5
(label) main::@return
(void()) plot((byte) plot::x , (byte) plot::y)
(word~) plot::$0 $0 zp ZP_WORD:8 4.0
(word~) plot::$0 $0 zp ZP_WORD:8 1.0
(byte~) plot::$1 reg byte a 4.0
(label) plot::@return
(byte*) plot::plotter
(byte*) plot::plotter#0 plotter zp ZP_WORD:8 3.0
(word) plot::plotter_x
(word) plot::plotter_x#0 plotter_x zp ZP_WORD:8 2.0
(word) plot::plotter_y
@ -274,7 +273,7 @@
(byte) plot::x#1 reg byte x 1001.0
(byte) plot::x#2 reg byte x 1001.0
(byte) plot::x#3 reg byte x 1001.0
(byte) plot::x#4 reg byte x 801.9999999999999
(byte) plot::x#4 reg byte x 1002.5
(byte) plot::y
(byte) plot::y#0 reg byte y 2002.0
(byte) plot::y#1 reg byte y 2002.0
@ -307,7 +306,7 @@ reg byte x [ line_xdyd::x#3 line_xdyd::x#6 line_xdyd::x#0 line_xdyd::x#1 line_xd
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_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 plot::plotter#0 ]
zp ZP_WORD:8 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 init_screen::c#2 init_screen::c#1 plot::plotter_x#0 plot::$0 ]
reg byte y [ line::y1#0 ]
zp ZP_BYTE:10 [ line::yd#1 line::yd#0 line::yd#3 line::yd#10 line_xdyi::$6 line_xdyd::$6 ]
reg byte y [ line_ydxi::$6 ]

View File

@ -5,7 +5,6 @@
jsr main
main: {
.label w = 3
.label sc = 3
.label h = 2
lda #0
sta h
@ -18,7 +17,7 @@ main: {
stx w
lda #'*'
ldy #0
sta (sc),y
sta (w),y
inx
cpx #8
bne b2

View File

@ -16,15 +16,14 @@ main::@1: scope:[main] from main main::@3
main::@2: scope:[main] from main::@1 main::@2
[6] (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::l#1 ) [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] )
[7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] )
[8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] )
[9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] )
[10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
[11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
[8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] )
[9] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
[10] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
to:main::@3
main::@3: scope:[main] from main::@2
[12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] )
[13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] )
[11] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] )
[12] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] )
to:main::@return
main::@return: scope:[main] from main::@3
[14] return [ ] ( main:2 [ ] )
[13] return [ ] ( main:2 [ ] )
to:@return

View File

@ -216,6 +216,8 @@ Constant (const byte[]) main::his#0 = { main::$0, main::$2, main::$4 }
Succesful SSA optimization Pass2ConstantIdentification
Fixing word constructor with main::$8 ← *(main::his#0 + main::h#4) w= main::l#2
Succesful SSA optimization Pass2FixWordConstructors
Eliminating Noop Cast (byte*) main::sc#0 ← ((byte*)) (word) main::w#0
Succesful SSA optimization Pass2NopCastElimination
Alias (word) main::w#0 = (word~) main::$8
Succesful SSA optimization Pass2AliasElimination
OPTIMIZING CONTROL FLOW GRAPH
@ -247,10 +249,9 @@ Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Created 2 initial phi equivalence classes
Coalesced [15] main::h#5 ← main::h#1
Coalesced [16] main::l#3 ← main::l#1
Coalesced [14] main::h#5 ← main::h#1
Coalesced [15] main::l#3 ← main::l#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@5
Culled Empty Block (label) main::@6
@ -264,7 +265,6 @@ Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
@ -285,17 +285,16 @@ main::@1: scope:[main] from main main::@3
main::@2: scope:[main] from main::@1 main::@2
[6] (byte) main::l#2 ← phi( main::@1/(byte/signed byte/word/signed word) 4 main::@2/(byte) main::l#1 ) [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] )
[7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] )
[8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] )
[9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] )
[10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
[11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
[8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] )
[9] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
[10] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] )
to:main::@3
main::@3: scope:[main] from main::@2
[12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] )
[13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] )
[11] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] )
[12] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] )
to:main::@return
main::@return: scope:[main] from main::@3
[14] return [ ] ( main:2 [ ] )
[13] return [ ] ( main:2 [ ] )
to:@return
DOMINATORS
@ -330,30 +329,26 @@ VARIABLE REGISTER WEIGHTS
(void()) main()
(byte) main::h
(byte) main::h#1 16.5
(byte) main::h#4 17.571428571428573
(byte) main::h#4 20.499999999999996
(byte[]) main::his
(byte) main::l
(byte) main::l#1 151.5
(byte) main::l#2 75.75
(byte) main::l#2 101.0
(byte*) main::sc
(byte*) main::sc#0 202.0
(word) main::w
(word) main::w#0 202.0
(word) main::w#0 101.0
Initial phi equivalence classes
[ main::h#4 main::h#1 ]
[ main::l#2 main::l#1 ]
Added variable main::w#0 to zero page equivalence class [ main::w#0 ]
Added variable main::sc#0 to zero page equivalence class [ main::sc#0 ]
Complete equivalence classes
[ main::h#4 main::h#1 ]
[ main::l#2 main::l#1 ]
[ main::w#0 ]
[ main::sc#0 ]
Allocated zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Allocated zp ZP_BYTE:3 [ main::l#2 main::l#1 ]
Allocated zp ZP_WORD:4 [ main::w#0 ]
Allocated zp ZP_WORD:6 [ main::sc#0 ]
INITIAL ASM
//SEG0 Basic Upstart
@ -381,7 +376,6 @@ bend:
//SEG9 main
main: {
.label w = 4
.label sc = 6
.label l = 3
.label h = 2
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
@ -414,34 +408,29 @@ main: {
sta w+1
lda l
sta w
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz2
lda w
sta sc
lda w+1
sta sc+1
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
//SEG21 [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
lda #'*'
ldy #0
sta (sc),y
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
sta (w),y
//SEG22 [9] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1=_inc_vbuz1
inc l
//SEG24 [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1
//SEG23 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuz1_neq_vbuc1_then_la1
lda l
cmp #8
bne b2_from_b2
jmp b3
//SEG25 main::@3
//SEG24 main::@3
b3:
//SEG26 [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1
//SEG25 [11] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1
inc h
//SEG27 [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1
//SEG26 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1
lda h
cmp #3
bne b1_from_b3
jmp breturn
//SEG28 main::@return
//SEG27 main::@return
breturn:
//SEG29 [14] return [ ] ( main:2 [ ] )
//SEG28 [13] return [ ] ( main:2 [ ] )
rts
his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200
}
@ -450,28 +439,24 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::l#2 main::l#1 ]
Statement [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) always clobbers reg byte a
Statement [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y
Statement [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ main::l#2 main::l#1 ]
Statement [7] (word) main::w#0 ← *((const byte[]) main::his#0 + (byte) main::h#4) w= (byte) main::l#2 [ main::h#4 main::l#2 main::w#0 ] ( main:2 [ main::h#4 main::l#2 main::w#0 ] ) always clobbers reg byte a
Statement [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) always clobbers reg byte a
Statement [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y
Statement [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) always clobbers reg byte a reg byte y
Potential registers zp ZP_BYTE:2 [ main::h#4 main::h#1 ] : zp ZP_BYTE:2 , reg byte x ,
Potential registers zp ZP_BYTE:3 [ main::l#2 main::l#1 ] : zp ZP_BYTE:3 , reg byte x ,
Potential registers zp ZP_WORD:4 [ main::w#0 ] : zp ZP_WORD:4 ,
Potential registers zp ZP_WORD:6 [ main::sc#0 ] : zp ZP_WORD:6 ,
REGISTER UPLIFT SCOPES
Uplift Scope [main] 227.25: zp ZP_BYTE:3 [ main::l#2 main::l#1 ] 202: zp ZP_WORD:4 [ main::w#0 ] 202: zp ZP_WORD:6 [ main::sc#0 ] 34.07: zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Uplift Scope [main] 252.5: zp ZP_BYTE:3 [ main::l#2 main::l#1 ] 101: zp ZP_WORD:4 [ main::w#0 ] 37: zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Uplift Scope []
Uplifting [main] best 5583 combination reg byte x [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] zp ZP_WORD:6 [ main::sc#0 ] zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Uplifting [] best 5583 combination
Uplifting [main] best 4383 combination reg byte x [ main::l#2 main::l#1 ] zp ZP_WORD:4 [ main::w#0 ] zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Uplifting [] best 4383 combination
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Uplifting [main] best 5583 combination zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Coalescing zero page register [ zp ZP_WORD:4 [ main::w#0 ] ] with [ zp ZP_WORD:6 [ main::sc#0 ] ]
Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ main::w#0 main::sc#0 ]
Uplifting [main] best 4383 combination zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ main::w#0 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
@ -499,7 +484,6 @@ bend:
//SEG9 main
main: {
.label w = 3
.label sc = 3
.label h = 2
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
b1_from_main:
@ -529,29 +513,28 @@ main: {
lda his,y
sta w+1
stx w
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
//SEG21 [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
lda #'*'
ldy #0
sta (sc),y
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
sta (w),y
//SEG22 [9] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
inx
//SEG24 [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx_neq_vbuc1_then_la1
//SEG23 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx_neq_vbuc1_then_la1
cpx #8
bne b2_from_b2
jmp b3
//SEG25 main::@3
//SEG24 main::@3
b3:
//SEG26 [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1
//SEG25 [11] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1
inc h
//SEG27 [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1
//SEG26 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1
lda h
cmp #3
bne b1_from_b3
jmp breturn
//SEG28 main::@return
//SEG27 main::@return
breturn:
//SEG29 [14] return [ ] ( main:2 [ ] )
//SEG28 [13] return [ ] ( main:2 [ ] )
rts
his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200
}
@ -597,20 +580,19 @@ FINAL SYMBOL TABLE
(label) main::@return
(byte) main::h
(byte) main::h#1 h zp ZP_BYTE:2 16.5
(byte) main::h#4 h zp ZP_BYTE:2 17.571428571428573
(byte) main::h#4 h zp ZP_BYTE:2 20.499999999999996
(byte[]) main::his
(const byte[]) main::his#0 his = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256, >(const byte*) SCREEN#0+(word/signed word) 512 }
(byte) main::l
(byte) main::l#1 reg byte x 151.5
(byte) main::l#2 reg byte x 75.75
(byte) main::l#2 reg byte x 101.0
(byte*) main::sc
(byte*) main::sc#0 sc zp ZP_WORD:3 202.0
(word) main::w
(word) main::w#0 w zp ZP_WORD:3 202.0
(word) main::w#0 w zp ZP_WORD:3 101.0
zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
reg byte x [ main::l#2 main::l#1 ]
zp ZP_WORD:3 [ main::w#0 main::sc#0 ]
zp ZP_WORD:3 [ main::w#0 ]
FINAL ASSEMBLER
@ -633,7 +615,6 @@ Score: 3387
//SEG9 main
main: {
.label w = 3
.label sc = 3
.label h = 2
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
//SEG11 [5] phi (byte) main::h#4 = (byte/signed byte/word/signed word) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
@ -655,25 +636,24 @@ main: {
lda his,y
sta w+1
stx w
//SEG21 [8] (byte*) main::sc#0 ← ((byte*)) (word) main::w#0 [ main::h#4 main::l#2 main::sc#0 ] ( main:2 [ main::h#4 main::l#2 main::sc#0 ] ) -- pbuz1=_ptrby_vwuz1
//SEG22 [9] *((byte*) main::sc#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
//SEG21 [8] *((byte*)(word) main::w#0) ← (byte) '*' [ main::h#4 main::l#2 ] ( main:2 [ main::h#4 main::l#2 ] ) -- _deref_pbuz1=vbuc1
lda #'*'
ldy #0
sta (sc),y
//SEG23 [10] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
sta (w),y
//SEG22 [9] (byte) main::l#1 ← ++ (byte) main::l#2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx=_inc_vbuxx
inx
//SEG24 [11] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx_neq_vbuc1_then_la1
//SEG23 [10] if((byte) main::l#1!=(byte/signed byte/word/signed word) 8) goto main::@2 [ main::h#4 main::l#1 ] ( main:2 [ main::h#4 main::l#1 ] ) -- vbuxx_neq_vbuc1_then_la1
cpx #8
bne b2
//SEG25 main::@3
//SEG26 [12] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1
//SEG24 main::@3
//SEG25 [11] (byte) main::h#1 ← ++ (byte) main::h#4 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1=_inc_vbuz1
inc h
//SEG27 [13] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1
//SEG26 [12] if((byte) main::h#1!=(byte/signed byte/word/signed word) 3) goto main::@1 [ main::h#1 ] ( main:2 [ main::h#1 ] ) -- vbuz1_neq_vbuc1_then_la1
lda h
cmp #3
bne b1
//SEG28 main::@return
//SEG29 [14] return [ ] ( main:2 [ ] )
//SEG27 main::@return
//SEG28 [13] return [ ] ( main:2 [ ] )
rts
his: .byte >SCREEN, >SCREEN+$100, >SCREEN+$200
}

View File

@ -10,17 +10,16 @@
(label) main::@return
(byte) main::h
(byte) main::h#1 h zp ZP_BYTE:2 16.5
(byte) main::h#4 h zp ZP_BYTE:2 17.571428571428573
(byte) main::h#4 h zp ZP_BYTE:2 20.499999999999996
(byte[]) main::his
(const byte[]) main::his#0 his = { >(const byte*) SCREEN#0, >(const byte*) SCREEN#0+(word/signed word) 256, >(const byte*) SCREEN#0+(word/signed word) 512 }
(byte) main::l
(byte) main::l#1 reg byte x 151.5
(byte) main::l#2 reg byte x 75.75
(byte) main::l#2 reg byte x 101.0
(byte*) main::sc
(byte*) main::sc#0 sc zp ZP_WORD:3 202.0
(word) main::w
(word) main::w#0 w zp ZP_WORD:3 202.0
(word) main::w#0 w zp ZP_WORD:3 101.0
zp ZP_BYTE:2 [ main::h#4 main::h#1 ]
reg byte x [ main::l#2 main::l#1 ]
zp ZP_WORD:3 [ main::w#0 main::sc#0 ]
zp ZP_WORD:3 [ main::w#0 ]

View File

@ -141,7 +141,7 @@ addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
[66] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC
[67] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[67] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*~) prepareMEM::mem#7 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] )
[69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] )
@ -179,7 +179,7 @@ divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
to:@return
setFAC: scope:[setFAC] from main main::@1 main::@8
[84] (word) setFAC::w#3 ← phi( main/(word/signed word) 1275 main::@1/(word) setFAC::w#1 main::@8/(byte/signed byte/word/signed word) 25 ) [ setFAC::w#3 ] ( main:2::setFAC:5 [ setFAC::w#3 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] )
[85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] )
[85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] )
[86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:setFAC::@1
setFAC::@1: scope:[setFAC] from setFAC

View File

@ -2016,6 +2016,8 @@ Constant (const byte[]) prepareMEM::mem#3 = divMEMbyFAC::mem#0
Succesful SSA optimization Pass2ConstantIdentification
Fixing word constructor with getFAC::$0 ← *(memHi#0) w= *(memLo#0)
Succesful SSA optimization Pass2FixWordConstructors
Eliminating Noop Cast (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3
Succesful SSA optimization Pass2NopCastElimination
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_word::@2
Culled Empty Block (label) print_byte::@2
@ -2062,8 +2064,6 @@ OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte[]) prepareMEM::mem#2
Inlining constant with var siblings (const byte[]) prepareMEM::mem#2
Inlining constant with var siblings (const byte[]) prepareMEM::mem#2
Inlining constant with var siblings (const byte[]) prepareMEM::mem#2
Inlining constant with var siblings (const byte[]) prepareMEM::mem#3
Inlining constant with var siblings (const byte[]) prepareMEM::mem#3
Inlining constant with var siblings (const byte[]) prepareMEM::mem#3
Inlining constant with var siblings (const byte[]) prepareMEM::mem#3
@ -2126,8 +2126,8 @@ Calls in [print_byte] to print_char:61 print_char:66
Calls in [addMEMtoFAC] to prepareMEM:76
Calls in [mulFACbyMEM] to prepareMEM:88
Calls in [divMEMbyFAC] to prepareMEM:94
Calls in [setFAC] to prepareMEM:100
Calls in [setMEMtoFAC] to prepareMEM:106
Calls in [setFAC] to prepareMEM:99
Calls in [setMEMtoFAC] to prepareMEM:105
Propagating live ranges...
Propagating live ranges...
@ -2170,8 +2170,7 @@ Coalesced [60] char_cursor#51 ← char_cursor#31
Coalesced [64] print_char::ch#4 ← print_char::ch#1
Coalesced (already) [65] char_cursor#52 ← char_cursor#10
Coalesced [87] prepareMEM::mem#6 ← prepareMEM::mem#4
Coalesced [99] prepareMEM::mem#7 ← prepareMEM::mem#0
Coalesced [105] prepareMEM::mem#8 ← prepareMEM::mem#1
Coalesced [104] prepareMEM::mem#8 ← prepareMEM::mem#1
Coalesced down to 9 phi equivalence classes
Culled Empty Block (label) print_ln::@3
Block Sequence Planned @begin @36 @end main main::@3 main::@4 main::@1 main::@6 main::@7 main::@8 main::@9 main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@return main::@17 print_ln print_ln::@1 print_ln::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return divFACby10 divFACby10::@return
@ -2363,7 +2362,7 @@ addMEMtoFAC::@return: scope:[addMEMtoFAC] from addMEMtoFAC::@1
[66] return [ ] ( main:2::addMEMtoFAC:26 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:@return
prepareMEM: scope:[prepareMEM] from addMEMtoFAC divMEMbyFAC mulFACbyMEM setFAC setMEMtoFAC
[67] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*) prepareMEM::mem#0 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[67] (byte*) prepareMEM::mem#5 ← phi( addMEMtoFAC/(const byte[]) main::f_127#0 divMEMbyFAC/(const byte[]) main::f_i#0 mulFACbyMEM/(byte*) prepareMEM::mem#4 setFAC/(byte*~) prepareMEM::mem#7 setMEMtoFAC/(byte*) prepareMEM::mem#1 ) [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[68] (byte~) prepareMEM::$0 ← < (byte*) prepareMEM::mem#5 [ prepareMEM::mem#5 prepareMEM::$0 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 prepareMEM::$0 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 prepareMEM::$0 ] )
[69] *((const byte*) memLo#0) ← (byte~) prepareMEM::$0 [ prepareMEM::mem#5 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::mem#5 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::mem#5 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#5 ] )
[70] (byte~) prepareMEM::$1 ← > (byte*) prepareMEM::mem#5 [ prepareMEM::$1 ] ( main:2::addMEMtoFAC:26::prepareMEM:64 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:14::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::mulFACbyMEM:24::prepareMEM:75 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::divMEMbyFAC:20::prepareMEM:81 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:5::prepareMEM:86 [ prepareMEM::$1 ] main:2::setFAC:12::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setFAC:18::prepareMEM:86 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] main:2::setMEMtoFAC:9::prepareMEM:91 [ prepareMEM::$1 ] main:2::setMEMtoFAC:16::prepareMEM:91 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::$1 ] )
@ -2401,7 +2400,7 @@ divMEMbyFAC::@return: scope:[divMEMbyFAC] from divMEMbyFAC::@1
to:@return
setFAC: scope:[setFAC] from main main::@1 main::@8
[84] (word) setFAC::w#3 ← phi( main/(word/signed word) 1275 main::@1/(word) setFAC::w#1 main::@8/(byte/signed byte/word/signed word) 25 ) [ setFAC::w#3 ] ( main:2::setFAC:5 [ setFAC::w#3 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 setFAC::w#3 ] )
[85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] )
[85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] )
[86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
to:setFAC::@1
setFAC::@1: scope:[setFAC] from setFAC
@ -2551,10 +2550,10 @@ VARIABLE REGISTER WEIGHTS
(byte~) prepareMEM::$0 4.0
(byte~) prepareMEM::$1 4.0
(byte*) prepareMEM::mem
(byte*) prepareMEM::mem#0 4.0
(byte*) prepareMEM::mem#1 4.0
(byte*) prepareMEM::mem#4 4.0
(byte*) prepareMEM::mem#5 3.333333333333333
(byte*~) prepareMEM::mem#7 4.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 4.0
(byte~) print_byte::$2 4.0
@ -2575,7 +2574,7 @@ VARIABLE REGISTER WEIGHTS
(void()) setFAC((word) setFAC::w)
(word) setFAC::w
(word) setFAC::w#1 22.0
(word) setFAC::w#3 13.0
(word) setFAC::w#3 11.0
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(byte*) setMEMtoFAC::mem
(byte*) setMEMtoFAC::mem#2 2.0
@ -2587,7 +2586,7 @@ Initial phi equivalence classes
[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
[ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
[ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
[ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ]
[ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ]
[ mulFACbyMEM::mem#2 ]
[ setFAC::w#3 setFAC::w#1 ]
[ setMEMtoFAC::mem#2 ]
@ -2604,7 +2603,7 @@ Complete equivalence classes
[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
[ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
[ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
[ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ]
[ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ]
[ mulFACbyMEM::mem#2 ]
[ setFAC::w#3 setFAC::w#1 ]
[ setMEMtoFAC::mem#2 ]
@ -2620,7 +2619,7 @@ Allocated zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ]
Allocated zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
Allocated zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
Allocated zp ZP_WORD:7 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
Allocated zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ]
Allocated zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ]
Allocated zp ZP_WORD:11 [ mulFACbyMEM::mem#2 ]
Allocated zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ]
Allocated zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ]
@ -3117,7 +3116,7 @@ divMEMbyFAC: {
//SEG167 setFAC
setFAC: {
.label w = $d
//SEG168 [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz2
//SEG168 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] ) -- pbuz1=pbuz2
lda w
sta prepareMEM.mem
lda w+1
@ -3125,7 +3124,7 @@ setFAC: {
//SEG169 [86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
//SEG170 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM]
prepareMEM_from_setFAC:
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy
jsr prepareMEM
jmp b1
//SEG172 setFAC::@1
@ -3196,7 +3195,7 @@ Statement asm { lda$fe ldy$ff jsr$b867 } always clobbers reg byte a reg byte y
Statement [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] ) always clobbers reg byte a
Statement asm { lda$fe ldy$ff jsr$ba28 } always clobbers reg byte a reg byte y
Statement asm { lda$fe ldy$ff jsr$bb0f } always clobbers reg byte a reg byte y
Statement [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) always clobbers reg byte a
Statement [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] ) always clobbers reg byte a
Statement asm { ldy$fe lda$ff jsr$b391 } always clobbers reg byte a reg byte y
Statement [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] ) always clobbers reg byte a
Statement asm { ldx$fe ldy$ff jsr$bbd4 } always clobbers reg byte x reg byte y
@ -3217,7 +3216,7 @@ Statement asm { lda$fe ldy$ff jsr$b867 } always clobbers reg byte a reg byte y
Statement [74] (byte*) prepareMEM::mem#4 ← (byte*) mulFACbyMEM::mem#2 [ prepareMEM::mem#4 ] ( main:2::mulFACbyMEM:14 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] main:2::mulFACbyMEM:24 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#4 ] ) always clobbers reg byte a
Statement asm { lda$fe ldy$ff jsr$ba28 } always clobbers reg byte a reg byte y
Statement asm { lda$fe ldy$ff jsr$bb0f } always clobbers reg byte a reg byte y
Statement [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) always clobbers reg byte a
Statement [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] ) always clobbers reg byte a
Statement asm { ldy$fe lda$ff jsr$b391 } always clobbers reg byte a reg byte y
Statement [90] (byte*) prepareMEM::mem#1 ← (byte*) setMEMtoFAC::mem#2 [ prepareMEM::mem#1 ] ( main:2::setMEMtoFAC:9 [ prepareMEM::mem#1 ] main:2::setMEMtoFAC:16 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#1 ] ) always clobbers reg byte a
Statement asm { ldx$fe ldy$ff jsr$bbd4 } always clobbers reg byte x reg byte y
@ -3226,7 +3225,7 @@ Potential registers zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ]
Potential registers zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x ,
Potential registers zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:7 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ] : zp ZP_WORD:7 ,
Potential registers zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] : zp ZP_WORD:9 ,
Potential registers zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ] : zp ZP_WORD:9 ,
Potential registers zp ZP_WORD:11 [ mulFACbyMEM::mem#2 ] : zp ZP_WORD:11 ,
Potential registers zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] : zp ZP_WORD:13 ,
Potential registers zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ] : zp ZP_WORD:15 ,
@ -3240,9 +3239,9 @@ Potential registers zp ZP_BYTE:26 [ prepareMEM::$1 ] : zp ZP_BYTE:26 , reg byte
REGISTER UPLIFT SCOPES
Uplift Scope [] 250.97: zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] 34.89: zp ZP_WORD:7 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
Uplift Scope [setFAC] 35: zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ]
Uplift Scope [setFAC] 33: zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ]
Uplift Scope [getFAC] 22: zp ZP_WORD:17 [ getFAC::return#2 ] 4.33: zp ZP_WORD:23 [ getFAC::return#0 ]
Uplift Scope [prepareMEM] 15.33: zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] 4: zp ZP_BYTE:25 [ prepareMEM::$0 ] 4: zp ZP_BYTE:26 [ prepareMEM::$1 ]
Uplift Scope [prepareMEM] 15.33: zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ] 4: zp ZP_BYTE:25 [ prepareMEM::$0 ] 4: zp ZP_BYTE:26 [ prepareMEM::$1 ]
Uplift Scope [print_byte] 10: zp ZP_BYTE:5 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp ZP_BYTE:21 [ print_byte::$0 ] 4: zp ZP_BYTE:22 [ print_byte::$2 ]
Uplift Scope [print_char] 14: zp ZP_BYTE:6 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
Uplift Scope [main] 12.38: zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
@ -3258,7 +3257,7 @@ Uplift Scope [divFACby10]
Uplifting [] best 6314 combination zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ] zp ZP_WORD:7 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
Uplifting [setFAC] best 6314 combination zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ]
Uplifting [getFAC] best 6314 combination zp ZP_WORD:17 [ getFAC::return#2 ] zp ZP_WORD:23 [ getFAC::return#0 ]
Uplifting [prepareMEM] best 6302 combination zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ]
Uplifting [prepareMEM] best 6302 combination zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ] reg byte a [ prepareMEM::$0 ] reg byte a [ prepareMEM::$1 ]
Uplifting [print_byte] best 6290 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ]
Uplifting [print_char] best 6281 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
Uplifting [main] best 6281 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
@ -3272,14 +3271,14 @@ Uplifting [sinFAC] best 6281 combination
Uplifting [divFACby10] best 6281 combination
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#10 main::i#1 ]
Uplifting [main] best 6281 combination zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 ] ] with [ zp ZP_WORD:11 [ mulFACbyMEM::mem#2 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 ] ] with [ zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 ] ] with [ zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 ] ] with [ zp ZP_WORD:17 [ getFAC::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 ] ] with [ zp ZP_WORD:19 [ print_word::w#0 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 ] ] with [ zp ZP_WORD:23 [ getFAC::return#0 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 ] ] with [ zp ZP_WORD:11 [ mulFACbyMEM::mem#2 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 ] ] with [ zp ZP_WORD:13 [ setFAC::w#3 setFAC::w#1 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 ] ] with [ zp ZP_WORD:15 [ setMEMtoFAC::mem#2 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 ] ] with [ zp ZP_WORD:17 [ getFAC::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 ] ] with [ zp ZP_WORD:19 [ print_word::w#0 ] ]
Coalescing zero page register [ zp ZP_WORD:9 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 ] ] with [ zp ZP_WORD:23 [ getFAC::return#0 ] ]
Allocated (was zp ZP_WORD:7) zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
@ -3741,11 +3740,12 @@ divMEMbyFAC: {
//SEG167 setFAC
setFAC: {
.label w = 7
//SEG168 [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz1
//SEG168 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] )
// (byte*~) prepareMEM::mem#7 = (byte*)(word) setFAC::w#3 // register copy zp ZP_WORD:7
//SEG169 [86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
//SEG170 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM]
prepareMEM_from_setFAC:
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy
jsr prepareMEM
jmp b1
//SEG172 setFAC::@1
@ -3983,10 +3983,10 @@ FINAL SYMBOL TABLE
(byte~) prepareMEM::$1 reg byte a 4.0
(label) prepareMEM::@return
(byte*) prepareMEM::mem
(byte*) prepareMEM::mem#0 mem zp ZP_WORD:7 4.0
(byte*) prepareMEM::mem#1 mem zp ZP_WORD:7 4.0
(byte*) prepareMEM::mem#4 mem zp ZP_WORD:7 4.0
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333
(byte*~) prepareMEM::mem#7 mem zp ZP_WORD:7 4.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0
@ -4017,7 +4017,7 @@ FINAL SYMBOL TABLE
(label) setFAC::@return
(word) setFAC::w
(word) setFAC::w#1 w zp ZP_WORD:7 22.0
(word) setFAC::w#3 w zp ZP_WORD:7 13.0
(word) setFAC::w#3 w zp ZP_WORD:7 11.0
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(label) setMEMtoFAC::@1
(label) setMEMtoFAC::@return
@ -4031,7 +4031,7 @@ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ prepareMEM::$0 ]
@ -4400,10 +4400,11 @@ divMEMbyFAC: {
//SEG167 setFAC
setFAC: {
.label w = 7
//SEG168 [85] (byte*) prepareMEM::mem#0 ← ((byte*)) (word) setFAC::w#3 [ prepareMEM::mem#0 ] ( main:2::setFAC:5 [ prepareMEM::mem#0 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#0 ] ) -- pbuz1=_ptrby_vwuz1
//SEG168 [85] (byte*~) prepareMEM::mem#7 ← (byte*)(word) setFAC::w#3 [ prepareMEM::mem#7 ] ( main:2::setFAC:5 [ prepareMEM::mem#7 ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 prepareMEM::mem#7 ] )
// (byte*~) prepareMEM::mem#7 = (byte*)(word) setFAC::w#3 // register copy zp ZP_WORD:7
//SEG169 [86] call prepareMEM param-assignment [ ] ( main:2::setFAC:5 [ ] main:2::setFAC:12 [ main::i#10 char_cursor#32 line_cursor#13 ] main:2::setFAC:18 [ main::i#10 char_cursor#32 line_cursor#13 ] )
//SEG170 [67] phi from setFAC to prepareMEM [phi:setFAC->prepareMEM]
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*) prepareMEM::mem#0 [phi:setFAC->prepareMEM#0] -- register_copy
//SEG171 [67] phi (byte*) prepareMEM::mem#5 = (byte*~) prepareMEM::mem#7 [phi:setFAC->prepareMEM#0] -- register_copy
jsr prepareMEM
//SEG172 setFAC::@1
//SEG173 asm { ldy$fe lda$ff jsr$b391 }

View File

@ -67,10 +67,10 @@
(byte~) prepareMEM::$1 reg byte a 4.0
(label) prepareMEM::@return
(byte*) prepareMEM::mem
(byte*) prepareMEM::mem#0 mem zp ZP_WORD:7 4.0
(byte*) prepareMEM::mem#1 mem zp ZP_WORD:7 4.0
(byte*) prepareMEM::mem#4 mem zp ZP_WORD:7 4.0
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:7 3.333333333333333
(byte*~) prepareMEM::mem#7 mem zp ZP_WORD:7 4.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0
@ -101,7 +101,7 @@
(label) setFAC::@return
(word) setFAC::w
(word) setFAC::w#1 w zp ZP_WORD:7 22.0
(word) setFAC::w#3 w zp ZP_WORD:7 13.0
(word) setFAC::w#3 w zp ZP_WORD:7 11.0
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(label) setMEMtoFAC::@1
(label) setMEMtoFAC::@return
@ -115,7 +115,7 @@ zp ZP_WORD:3 [ line_cursor#6 line_cursor#13 line_cursor#1 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:5 [ char_cursor#23 char_cursor#31 char_cursor#32 char_cursor#48 char_cursor#10 ]
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
zp ZP_WORD:7 [ prepareMEM::mem#5 prepareMEM::mem#4 prepareMEM::mem#7 prepareMEM::mem#1 mulFACbyMEM::mem#2 setFAC::w#3 setFAC::w#1 setMEMtoFAC::mem#2 getFAC::return#2 print_word::w#0 getFAC::return#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ prepareMEM::$0 ]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -249,12 +249,12 @@
(byte~) prepareMEM::$1 reg byte a 4.0
(label) prepareMEM::@return
(byte*) prepareMEM::mem
(byte*) prepareMEM::mem#0 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#1 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#2 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#3 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 4.666666666666666
(byte*~) prepareMEM::mem#9 mem zp ZP_WORD:12 4.0
(byte*) progress_cursor
(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0
(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335
@ -283,7 +283,7 @@
(word) setFAC::w#1 w zp ZP_WORD:12 4.0
(word) setFAC::w#3 w zp ZP_WORD:12 22.0
(word) setFAC::w#4 w zp ZP_WORD:12 22.0
(word) setFAC::w#5 w zp ZP_WORD:12 28.0
(word) setFAC::w#5 w zp ZP_WORD:12 26.0
(void()) setMEMtoFAC((byte*) setMEMtoFAC::mem)
(label) setMEMtoFAC::@1
(label) setMEMtoFAC::@return
@ -323,7 +323,7 @@ reg byte x [ init::i#2 init::i#1 ]
zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ]
reg byte x [ gen_sintab::max#2 ]
zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#0 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ]
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ]
reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
reg byte y [ place_sprites::j#2 place_sprites::j#1 ]

View File

@ -175,7 +175,7 @@ print_sword::@return: scope:[print_sword] from print_sword::@1
to:@return
print_word: scope:[print_word] from multiply_error::@5 multiply_error::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 print_sword::@1
[86] (byte*) char_cursor#123 ← phi( multiply_error::@5/(byte*) char_cursor#117 multiply_error::@7/(byte*) char_cursor#117 multiply_tables_compare::@6/(byte*) char_cursor#117 multiply_tables_compare::@8/(byte*) char_cursor#117 print_sword::@1/(byte*) char_cursor#119 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 ] )
[86] (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word) print_word::w#1 multiply_tables_compare::@8/(word) print_word::w#2 print_sword::@1/(word~) print_word::w#11 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 ] )
[86] (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word~) print_word::w#9 multiply_tables_compare::@8/(word~) print_word::w#10 print_sword::@1/(word~) print_word::w#11 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 ] )
[87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] )
[88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:212 [ char_cursor#17 print_word::w#5 ] )
to:print_word::@1
@ -416,7 +416,7 @@ multiply_tables_compare::@3: scope:[multiply_tables_compare] from multiply_tabl
[206] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
to:multiply_tables_compare::@6
multiply_tables_compare::@6: scope:[multiply_tables_compare] from multiply_tables_compare::@3
[207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] )
[207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] )
[208] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] )
to:multiply_tables_compare::@7
multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tables_compare::@6
@ -424,7 +424,7 @@ multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tabl
[210] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] )
to:multiply_tables_compare::@8
multiply_tables_compare::@8: scope:[multiply_tables_compare] from multiply_tables_compare::@7
[211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] )
[211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] )
[212] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] )
to:multiply_tables_compare::@return
multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply_tables_compare::@10 multiply_tables_compare::@8

View File

@ -4503,6 +4503,8 @@ Eliminating Noop Cast (byte) multiply::b#0 ← ((byte)) (signed byte) signed_mul
Eliminating Noop Cast (byte~) signed_multiply::$7 ← ((byte)) (signed byte) signed_multiply::b#0
Eliminating Noop Cast (signed word) signed_multiply::return#0 ← ((signed word)) (word) signed_multiply::m#4
Eliminating Noop Cast (byte~) signed_multiply::$13 ← ((byte)) (signed byte) signed_multiply::a#0
Eliminating Noop Cast (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2
Eliminating Noop Cast (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2
Succesful SSA optimization Pass2NopCastElimination
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_sword::@3
@ -4917,7 +4919,7 @@ Calls in [print_sbyte] to print_char:134 print_byte:141
Calls in [signed_multiply] to multiply:147
Calls in [multiply_results_compare] to slow_multiply:194 multiply:201 multiply_error:210 print_str:217 print_ln:220
Calls in [multiply_error] to print_str:224 print_byte:228 print_str:230 print_byte:234 print_str:236 print_word:240 print_str:242 print_word:246 print_ln:249
Calls in [multiply_tables_compare] to print_str:265 print_word:269 print_str:271 print_word:275 print_str:283 print_ln:285
Calls in [multiply_tables_compare] to print_str:265 print_word:268 print_str:270 print_word:273 print_str:281 print_ln:283
Propagating live ranges...
Propagating live ranges...
@ -5025,32 +5027,30 @@ Coalesced (already) [248] char_cursor#161 ← char_cursor#17
Coalesced [256] slow_multiply::return#5 ← slow_multiply::m#1
Coalesced [259] slow_multiply::m#5 ← slow_multiply::m#1
Coalesced [260] slow_multiply::i#3 ← slow_multiply::i#1
Coalesced [267] print_word::w#9 ← print_word::w#1
Coalesced (already) [268] char_cursor#183 ← char_cursor#117
Coalesced (already) [270] char_cursor#171 ← char_cursor#17
Coalesced [273] print_word::w#10 ← print_word::w#2
Coalesced (already) [274] char_cursor#184 ← char_cursor#117
Coalesced (already) [276] char_cursor#198 ← char_cursor#17
Coalesced (already) [284] char_cursor#163 ← char_cursor#117
Not coalescing [286] char_cursor#197 ← line_cursor#1
Coalesced (already) [287] line_cursor#103 ← line_cursor#1
Coalesced [288] multiply_tables_compare::kc_sqr#8 ← multiply_tables_compare::kc_sqr#1
Coalesced [289] multiply_tables_compare::asm_sqr#6 ← multiply_tables_compare::asm_sqr#1
Coalesced [303] init_multiply::sqr#8 ← init_multiply::sqr#2
Coalesced [304] init_multiply::x_2#7 ← init_multiply::x_2#1
Coalesced [327] init_multiply::x_255#5 ← init_multiply::x_255#1
Coalesced [328] init_multiply::sqr2_lo#5 ← init_multiply::sqr2_lo#1
Coalesced [329] init_multiply::sqr2_hi#5 ← init_multiply::sqr2_hi#1
Coalesced [330] init_multiply::dir#4 ← init_multiply::dir#3
Coalesced (already) [331] init_multiply::dir#5 ← init_multiply::dir#2
Coalesced [332] init_multiply::c#5 ← init_multiply::c#1
Coalesced [333] init_multiply::sqr#6 ← init_multiply::sqr#1
Coalesced [334] init_multiply::sqr1_lo#5 ← init_multiply::sqr1_lo#1
Coalesced [335] init_multiply::sqr1_hi#5 ← init_multiply::sqr1_hi#1
Coalesced [336] init_multiply::x_2#5 ← init_multiply::x_2#2
Coalesced [337] init_multiply::sqr#7 ← init_multiply::sqr#4
Coalesced (already) [338] init_multiply::x_2#6 ← init_multiply::x_2#3
Coalesced [345] print_cls::sc#3 ← print_cls::sc#1
Coalesced (already) [267] char_cursor#183 ← char_cursor#117
Coalesced (already) [269] char_cursor#171 ← char_cursor#17
Coalesced (already) [272] char_cursor#184 ← char_cursor#117
Coalesced (already) [274] char_cursor#198 ← char_cursor#17
Coalesced (already) [282] char_cursor#163 ← char_cursor#117
Not coalescing [284] char_cursor#197 ← line_cursor#1
Coalesced (already) [285] line_cursor#103 ← line_cursor#1
Coalesced [286] multiply_tables_compare::kc_sqr#8 ← multiply_tables_compare::kc_sqr#1
Coalesced [287] multiply_tables_compare::asm_sqr#6 ← multiply_tables_compare::asm_sqr#1
Coalesced [301] init_multiply::sqr#8 ← init_multiply::sqr#2
Coalesced [302] init_multiply::x_2#7 ← init_multiply::x_2#1
Coalesced [325] init_multiply::x_255#5 ← init_multiply::x_255#1
Coalesced [326] init_multiply::sqr2_lo#5 ← init_multiply::sqr2_lo#1
Coalesced [327] init_multiply::sqr2_hi#5 ← init_multiply::sqr2_hi#1
Coalesced [328] init_multiply::dir#4 ← init_multiply::dir#3
Coalesced (already) [329] init_multiply::dir#5 ← init_multiply::dir#2
Coalesced [330] init_multiply::c#5 ← init_multiply::c#1
Coalesced [331] init_multiply::sqr#6 ← init_multiply::sqr#1
Coalesced [332] init_multiply::sqr1_lo#5 ← init_multiply::sqr1_lo#1
Coalesced [333] init_multiply::sqr1_hi#5 ← init_multiply::sqr1_hi#1
Coalesced [334] init_multiply::x_2#5 ← init_multiply::x_2#2
Coalesced [335] init_multiply::sqr#7 ← init_multiply::sqr#4
Coalesced (already) [336] init_multiply::x_2#6 ← init_multiply::x_2#3
Coalesced [343] print_cls::sc#3 ← print_cls::sc#1
Coalesced down to 32 phi equivalence classes
Culled Empty Block (label) signed_multiply_results_compare::@13
Culled Empty Block (label) signed_multiply_results_compare::@14
@ -5309,7 +5309,7 @@ print_sword::@return: scope:[print_sword] from print_sword::@1
to:@return
print_word: scope:[print_word] from multiply_error::@5 multiply_error::@7 multiply_tables_compare::@6 multiply_tables_compare::@8 print_sword::@1
[86] (byte*) char_cursor#123 ← phi( multiply_error::@5/(byte*) char_cursor#117 multiply_error::@7/(byte*) char_cursor#117 multiply_tables_compare::@6/(byte*) char_cursor#117 multiply_tables_compare::@8/(byte*) char_cursor#117 print_sword::@1/(byte*) char_cursor#119 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 ] )
[86] (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word) print_word::w#1 multiply_tables_compare::@8/(word) print_word::w#2 print_sword::@1/(word~) print_word::w#11 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 ] )
[86] (word) print_word::w#5 ← phi( multiply_error::@5/(word) print_word::w#3 multiply_error::@7/(word) print_word::w#4 multiply_tables_compare::@6/(word~) print_word::w#9 multiply_tables_compare::@8/(word~) print_word::w#10 print_sword::@1/(word~) print_word::w#11 ) [ print_word::w#5 char_cursor#123 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 ] )
[87] (byte) print_byte::b#1 ← > (word) print_word::w#5 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 print_word::w#5 char_cursor#123 print_byte::b#1 ] main:2::multiply_tables_compare:11::print_word:212 [ print_word::w#5 char_cursor#123 print_byte::b#1 ] )
[88] call print_byte param-assignment [ char_cursor#17 print_word::w#5 ] ( main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:69::print_word:84 [ signed_multiply_error::ma#0 line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::signed_multiply_results_compare:15::signed_multiply_error:36::print_sword:73::print_word:84 [ line_cursor#1 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:187 [ line_cursor#27 multiply_error::ma#0 char_cursor#17 print_word::w#5 ] main:2::multiply_results_compare:13::multiply_error:166::print_word:191 [ line_cursor#27 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:208 [ multiply_tables_compare::kc_sqr#2 char_cursor#17 print_word::w#5 ] main:2::multiply_tables_compare:11::print_word:212 [ char_cursor#17 print_word::w#5 ] )
to:print_word::@1
@ -5550,7 +5550,7 @@ multiply_tables_compare::@3: scope:[multiply_tables_compare] from multiply_tabl
[206] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] )
to:multiply_tables_compare::@6
multiply_tables_compare::@6: scope:[multiply_tables_compare] from multiply_tables_compare::@3
[207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] )
[207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] )
[208] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] )
to:multiply_tables_compare::@7
multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tables_compare::@6
@ -5558,7 +5558,7 @@ multiply_tables_compare::@7: scope:[multiply_tables_compare] from multiply_tabl
[210] call print_str param-assignment [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 multiply_tables_compare::kc_sqr#2 ] )
to:multiply_tables_compare::@8
multiply_tables_compare::@8: scope:[multiply_tables_compare] from multiply_tables_compare::@7
[211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] )
[211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] )
[212] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] )
to:multiply_tables_compare::@return
multiply_tables_compare::@return: scope:[multiply_tables_compare] from multiply_tables_compare::@10 multiply_tables_compare::@8
@ -5976,10 +5976,10 @@ VARIABLE REGISTER WEIGHTS
(void()) multiply_tables_compare()
(byte*) multiply_tables_compare::asm_sqr
(byte*) multiply_tables_compare::asm_sqr#1 7.333333333333333
(byte*) multiply_tables_compare::asm_sqr#2 8.75
(byte*) multiply_tables_compare::asm_sqr#2 8.25
(byte*) multiply_tables_compare::kc_sqr
(byte*) multiply_tables_compare::kc_sqr#1 16.5
(byte*) multiply_tables_compare::kc_sqr#2 3.8888888888888893
(byte*) multiply_tables_compare::kc_sqr#2 3.666666666666667
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 4.0
(byte~) print_byte::$2 4.0
@ -6022,12 +6022,12 @@ VARIABLE REGISTER WEIGHTS
(signed word) print_sword::w#4 4.0
(void()) print_word((word) print_word::w)
(word) print_word::w
(word) print_word::w#1 4.0
(word~) print_word::w#10 4.0
(word~) print_word::w#11 4.0
(word) print_word::w#2 4.0
(word) print_word::w#3 4.0
(word) print_word::w#4 4.0
(word) print_word::w#5 4.666666666666666
(word~) print_word::w#9 4.0
(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b)
(byte~) signed_multiply::$12 4.0
(byte/signed byte/word/signed word~) signed_multiply::$16 4.0
@ -6105,7 +6105,7 @@ Initial phi equivalence classes
[ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ]
[ print_str::str#14 print_str::str#16 print_str::str#0 ]
[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ]
[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ]
[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
[ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ]
@ -6171,7 +6171,7 @@ Complete equivalence classes
[ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ]
[ print_str::str#14 print_str::str#16 print_str::str#0 ]
[ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ]
[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ]
[ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ]
[ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
[ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
[ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ]
@ -6236,7 +6236,7 @@ Allocated zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_re
Allocated zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ]
Allocated zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ]
Allocated zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ]
Allocated zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ]
Allocated zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ]
Allocated zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
Allocated zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
Allocated zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ]
@ -7610,7 +7610,7 @@ multiply_tables_compare: {
jmp b6
//SEG443 multiply_tables_compare::@6
b6:
//SEG444 [207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2
//SEG444 [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=vwuz2
lda asm_sqr
sta print_word.w
lda asm_sqr+1
@ -7619,7 +7619,7 @@ multiply_tables_compare: {
//SEG446 [86] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word]
print_word_from_b6:
//SEG447 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy
//SEG448 [86] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy
//SEG448 [86] phi (word) print_word::w#5 = (word~) print_word::w#9 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy
jsr print_word
//SEG449 [209] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7]
b7_from_b6:
@ -7639,7 +7639,7 @@ multiply_tables_compare: {
jmp b8
//SEG455 multiply_tables_compare::@8
b8:
//SEG456 [211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) -- vwuz1=_word_pbuz2
//SEG456 [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] ) -- vwuz1=vwuz2
lda kc_sqr
sta print_word.w
lda kc_sqr+1
@ -7648,7 +7648,7 @@ multiply_tables_compare: {
//SEG458 [86] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word]
print_word_from_b8:
//SEG459 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy
//SEG460 [86] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy
//SEG460 [86] phi (word) print_word::w#5 = (word~) print_word::w#10 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy
jsr print_word
//SEG461 [213] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return]
breturn_from_b8:
@ -8135,8 +8135,8 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:79 [ s
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ slow_multiply::i#2 slow_multiply::i#1 ]
Statement [204] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y
Statement [205] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a
Statement [207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a
Statement [211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) always clobbers reg byte a
Statement [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a
Statement [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] ) always clobbers reg byte a
Statement [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a
Statement [222] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) always clobbers reg byte a
Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y
@ -8215,8 +8215,8 @@ Statement [190] (word) print_word::w#4 ← (word) multiply_error::ma#0 [ char_cu
Statement [197] (word) slow_multiply::m#1 ← (word) slow_multiply::m#3 + (byte) slow_multiply::b#0 [ slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ( main:2::multiply_results_compare:13::slow_multiply:152 [ line_cursor#27 char_cursor#27 multiply_results_compare::a#6 multiply_results_compare::b#2 slow_multiply::a#0 slow_multiply::b#0 slow_multiply::i#2 slow_multiply::m#1 ] ) always clobbers reg byte a
Statement [204] if(*((byte*) multiply_tables_compare::kc_sqr#2)==*((byte*) multiply_tables_compare::asm_sqr#2)) goto multiply_tables_compare::@2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a reg byte y
Statement [205] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word) 2 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::asm_sqr#2 ] ) always clobbers reg byte a
Statement [207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a
Statement [211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) always clobbers reg byte a
Statement [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) always clobbers reg byte a
Statement [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] ) always clobbers reg byte a
Statement [217] if((byte*) multiply_tables_compare::kc_sqr#1<(const byte[512]) mul_sqr1_lo#0+(word/signed word) 512*(byte/signed byte/word/signed word) 4) goto multiply_tables_compare::@1 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ( main:2::multiply_tables_compare:11 [ multiply_tables_compare::kc_sqr#1 multiply_tables_compare::asm_sqr#1 ] ) always clobbers reg byte a
Statement [222] (byte*~) char_cursor#197 ← (byte*) line_cursor#1 [ line_cursor#1 char_cursor#197 ] ( main:2::multiply_tables_compare:11 [ line_cursor#1 char_cursor#197 ] ) always clobbers reg byte a
Statement asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: staasm_mul_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: staasm_mul_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldaasm_mul_sqr1_hi+1,x staasm_mul_sqr2_hi+$100,x ldaasm_mul_sqr1_hi,x staasm_mul_sqr2_hi,y ldaasm_mul_sqr1_lo+1,x staasm_mul_sqr2_lo+$100,x ldaasm_mul_sqr1_lo,x staasm_mul_sqr2_lo,y dey inx bne!- } always clobbers reg byte a reg byte x reg byte y
@ -8244,7 +8244,7 @@ Potential registers zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_m
Potential registers zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ] : zp ZP_WORD:4 ,
Potential registers zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] : zp ZP_WORD:6 ,
Potential registers zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] : zp ZP_WORD:8 ,
Potential registers zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] : zp ZP_WORD:10 ,
Potential registers zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ] : zp ZP_WORD:10 ,
Potential registers zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] : zp ZP_BYTE:12 , reg byte a , reg byte x ,
Potential registers zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] : zp ZP_WORD:14 ,
@ -8314,11 +8314,11 @@ Uplift Scope [signed_multiply_results_compare] 180.5: zp ZP_BYTE:3 [ signed_mult
Uplift Scope [init_multiply] 45.1: zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] 24.36: zp ZP_BYTE:34 [ init_multiply::c#2 init_multiply::c#1 ] 24.14: zp ZP_BYTE:39 [ init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 ] 22: zp ZP_BYTE:94 [ init_multiply::$2 ] 22: zp ZP_BYTE:95 [ init_multiply::$5 ] 22: zp ZP_BYTE:96 [ init_multiply::$6 ] 20.62: zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] 19.04: zp ZP_WORD:35 [ init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] 16.5: zp ZP_BYTE:42 [ init_multiply::x_255#2 init_multiply::x_255#1 ] 14.14: zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] 12.05: zp ZP_BYTE:47 [ init_multiply::dir#2 init_multiply::dir#3 ] 8.5: zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ]
Uplift Scope [signed_multiply] 202: zp ZP_WORD:58 [ signed_multiply::return#2 ] 13.83: zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] 9.36: zp ZP_BYTE:57 [ signed_multiply::b#0 ] 7.36: zp ZP_BYTE:56 [ signed_multiply::a#0 ] 4: zp ZP_BYTE:72 [ signed_multiply::$6 ] 4: zp ZP_BYTE:73 [ signed_multiply::$16 ] 4: zp ZP_BYTE:74 [ signed_multiply::$12 ] 4: zp ZP_BYTE:75 [ signed_multiply::$17 ]
Uplift Scope [] 77.01: zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] 34.95: zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 ]
Uplift Scope [multiply_tables_compare] 20.39: zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] 16.08: zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ]
Uplift Scope [multiply_tables_compare] 20.17: zp ZP_WORD:30 [ multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 ] 15.58: zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ]
Uplift Scope [print_str] 35.5: zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ]
Uplift Scope [print_cls] 33: zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ]
Uplift Scope [print_byte] 23.5: zp ZP_BYTE:12 [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] 4: zp ZP_BYTE:68 [ print_byte::$0 ] 4: zp ZP_BYTE:69 [ print_byte::$2 ]
Uplift Scope [print_word] 24.67: zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ]
Uplift Scope [print_word] 24.67: zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ]
Uplift Scope [print_sword] 18.5: zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ]
Uplift Scope [print_sbyte] 18.5: zp ZP_BYTE:16 [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ]
Uplift Scope [print_char] 14: zp ZP_BYTE:13 [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
@ -8340,7 +8340,7 @@ Uplifting [multiply_tables_compare] best 202912 combination zp ZP_WORD:30 [ mult
Uplifting [print_str] best 202912 combination zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ]
Uplifting [print_cls] best 202912 combination zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ]
Uplifting [print_byte] best 202891 combination reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ] reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$2 ]
Uplifting [print_word] best 202891 combination zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ]
Uplifting [print_word] best 202891 combination zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ]
Uplifting [print_sword] best 202891 combination zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ]
Uplifting [print_sbyte] best 202877 combination reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ]
Uplifting [print_char] best 202862 combination reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
@ -8385,20 +8385,20 @@ Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 lin
Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 ] ] with [ zp ZP_WORD:43 [ init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ]
Coalescing zero page register [ zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 ] ] with [ zp ZP_WORD:48 [ print_cls::sc#2 print_cls::sc#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 ] ] with [ zp ZP_WORD:8 [ print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 ] ] with [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ] with [ zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] ] with [ zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] with [ zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] with [ zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] with [ zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 ] ] with [ zp ZP_WORD:58 [ signed_multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 ] ] with [ zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:70 [ multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 ] ] with [ zp ZP_WORD:76 [ multiply::return#0 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 ] ] with [ zp ZP_WORD:80 [ slow_multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 ] ] with [ zp ZP_WORD:84 [ multiply::return#3 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 multiply::return#3 ] ] with [ zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 ] ] with [ zp ZP_WORD:10 [ print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 ] ] with [ zp ZP_WORD:17 [ signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 ] ] with [ zp ZP_WORD:22 [ slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 ] ] with [ zp ZP_WORD:28 [ slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 ] ] with [ zp ZP_WORD:37 [ init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 ] ] with [ zp ZP_WORD:45 [ init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 ] ] with [ zp ZP_WORD:52 [ slow_signed_multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 ] ] with [ zp ZP_WORD:58 [ signed_multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 ] ] with [ zp ZP_WORD:60 [ signed_multiply_results_compare::ma#0 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 ] ] with [ zp ZP_WORD:70 [ multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 ] ] with [ zp ZP_WORD:76 [ multiply::return#0 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 ] ] with [ zp ZP_WORD:80 [ slow_multiply::return#2 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 ] ] with [ zp ZP_WORD:84 [ multiply::return#3 ] ]
Coalescing zero page register [ zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 multiply::return#3 ] ] with [ zp ZP_WORD:86 [ multiply_results_compare::ma#0 ] ]
Coalescing zero page register [ zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 ] ] with [ zp ZP_WORD:40 [ init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] ]
Coalescing zero page register [ zp ZP_WORD:14 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 ] ] with [ zp ZP_WORD:54 [ signed_multiply_results_compare::ms#0 ] ]
Coalescing zero page register [ zp ZP_WORD:32 [ multiply_tables_compare::asm_sqr#2 multiply_tables_compare::asm_sqr#1 ] ] with [ zp ZP_WORD:64 [ signed_multiply_error::ms#0 ] ]
@ -9630,7 +9630,7 @@ multiply_tables_compare: {
jmp b6
//SEG443 multiply_tables_compare::@6
b6:
//SEG444 [207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2
//SEG444 [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=vwuz2
lda asm_sqr
sta print_word.w
lda asm_sqr+1
@ -9639,7 +9639,7 @@ multiply_tables_compare: {
//SEG446 [86] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word]
print_word_from_b6:
//SEG447 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy
//SEG448 [86] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy
//SEG448 [86] phi (word) print_word::w#5 = (word~) print_word::w#9 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy
jsr print_word
//SEG449 [209] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7]
b7_from_b6:
@ -9659,7 +9659,7 @@ multiply_tables_compare: {
jmp b8
//SEG455 multiply_tables_compare::@8
b8:
//SEG456 [211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) -- vwuz1=_word_pbuz2
//SEG456 [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] ) -- vwuz1=vwuz2
lda kc_sqr
sta print_word.w
lda kc_sqr+1
@ -9668,7 +9668,7 @@ multiply_tables_compare: {
//SEG458 [86] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word]
print_word_from_b8:
//SEG459 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy
//SEG460 [86] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy
//SEG460 [86] phi (word) print_word::w#5 = (word~) print_word::w#10 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy
jsr print_word
//SEG461 [213] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return]
breturn_from_b8:
@ -10576,10 +10576,10 @@ FINAL SYMBOL TABLE
(label) multiply_tables_compare::@return
(byte*) multiply_tables_compare::asm_sqr
(byte*) multiply_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:10 7.333333333333333
(byte*) multiply_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:10 8.75
(byte*) multiply_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:10 8.25
(byte*) multiply_tables_compare::kc_sqr
(byte*) multiply_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5
(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.8888888888888893
(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.666666666666667
(const string) multiply_tables_compare::str str = (string) "multiply table mismatch at @"
(const string) multiply_tables_compare::str1 str1 = (string) " / @"
(const string) multiply_tables_compare::str2 str2 = (string) "multiply tables match!@"
@ -10646,12 +10646,12 @@ FINAL SYMBOL TABLE
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#1 w zp ZP_WORD:6 4.0
(word~) print_word::w#10 w zp ZP_WORD:6 4.0
(word~) print_word::w#11 w zp ZP_WORD:6 4.0
(word) print_word::w#2 w zp ZP_WORD:6 4.0
(word) print_word::w#3 w zp ZP_WORD:6 4.0
(word) print_word::w#4 w zp ZP_WORD:6 4.0
(word) print_word::w#5 w zp ZP_WORD:6 4.666666666666666
(word~) print_word::w#9 w zp ZP_WORD:6 4.0
(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b)
(byte~) signed_multiply::$12 reg byte a 4.0
(byte/signed byte/word/signed word~) signed_multiply::$16 reg byte a 4.0
@ -10764,7 +10764,7 @@ FINAL SYMBOL TABLE
zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply_error::b#0 slow_multiply::a#0 multiply_error::b#0 ]
zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 multiply_results_compare::b#2 multiply_results_compare::b#1 signed_multiply::b#0 ]
zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 multiply::return#3 multiply_results_compare::ma#0 ]
zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 multiply::return#3 multiply_results_compare::ma#0 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:8 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 signed_multiply_results_compare::ms#0 ]
@ -11769,7 +11769,7 @@ multiply_tables_compare: {
sta print_str.str+1
jsr print_str
//SEG443 multiply_tables_compare::@6
//SEG444 [207] (word) print_word::w#1 ← ((word)) (byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#1 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=_word_pbuz2
//SEG444 [207] (word~) print_word::w#9 ← (word)(byte*) multiply_tables_compare::asm_sqr#2 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#9 multiply_tables_compare::kc_sqr#2 ] ) -- vwuz1=vwuz2
lda asm_sqr
sta print_word.w
lda asm_sqr+1
@ -11777,7 +11777,7 @@ multiply_tables_compare: {
//SEG445 [208] call print_word param-assignment [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 multiply_tables_compare::kc_sqr#2 ] )
//SEG446 [86] phi from multiply_tables_compare::@6 to print_word [phi:multiply_tables_compare::@6->print_word]
//SEG447 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@6->print_word#0] -- register_copy
//SEG448 [86] phi (word) print_word::w#5 = (word) print_word::w#1 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy
//SEG448 [86] phi (word) print_word::w#5 = (word~) print_word::w#9 [phi:multiply_tables_compare::@6->print_word#1] -- register_copy
jsr print_word
//SEG449 [209] phi from multiply_tables_compare::@6 to multiply_tables_compare::@7 [phi:multiply_tables_compare::@6->multiply_tables_compare::@7]
//SEG450 multiply_tables_compare::@7
@ -11791,7 +11791,7 @@ multiply_tables_compare: {
sta print_str.str+1
jsr print_str
//SEG455 multiply_tables_compare::@8
//SEG456 [211] (word) print_word::w#2 ← ((word)) (byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#2 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#2 ] ) -- vwuz1=_word_pbuz2
//SEG456 [211] (word~) print_word::w#10 ← (word)(byte*) multiply_tables_compare::kc_sqr#2 [ char_cursor#117 print_word::w#10 ] ( main:2::multiply_tables_compare:11 [ char_cursor#117 print_word::w#10 ] ) -- vwuz1=vwuz2
lda kc_sqr
sta print_word.w
lda kc_sqr+1
@ -11799,7 +11799,7 @@ multiply_tables_compare: {
//SEG457 [212] call print_word param-assignment [ char_cursor#17 ] ( main:2::multiply_tables_compare:11 [ char_cursor#17 ] )
//SEG458 [86] phi from multiply_tables_compare::@8 to print_word [phi:multiply_tables_compare::@8->print_word]
//SEG459 [86] phi (byte*) char_cursor#123 = (byte*) char_cursor#117 [phi:multiply_tables_compare::@8->print_word#0] -- register_copy
//SEG460 [86] phi (word) print_word::w#5 = (word) print_word::w#2 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy
//SEG460 [86] phi (word) print_word::w#5 = (word~) print_word::w#10 [phi:multiply_tables_compare::@8->print_word#1] -- register_copy
jsr print_word
//SEG461 [213] phi from multiply_tables_compare::@8 to multiply_tables_compare::@return [phi:multiply_tables_compare::@8->multiply_tables_compare::@return]
//SEG462 [213] phi (byte*) line_cursor#27 = ((byte*))(word/signed word) 1024 [phi:multiply_tables_compare::@8->multiply_tables_compare::@return#0] -- pbuz1=pbuc1

View File

@ -166,10 +166,10 @@
(label) multiply_tables_compare::@return
(byte*) multiply_tables_compare::asm_sqr
(byte*) multiply_tables_compare::asm_sqr#1 asm_sqr zp ZP_WORD:10 7.333333333333333
(byte*) multiply_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:10 8.75
(byte*) multiply_tables_compare::asm_sqr#2 asm_sqr zp ZP_WORD:10 8.25
(byte*) multiply_tables_compare::kc_sqr
(byte*) multiply_tables_compare::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5
(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.8888888888888893
(byte*) multiply_tables_compare::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.666666666666667
(const string) multiply_tables_compare::str str = (string) "multiply table mismatch at @"
(const string) multiply_tables_compare::str1 str1 = (string) " / @"
(const string) multiply_tables_compare::str2 str2 = (string) "multiply tables match!@"
@ -236,12 +236,12 @@
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word) print_word::w#1 w zp ZP_WORD:6 4.0
(word~) print_word::w#10 w zp ZP_WORD:6 4.0
(word~) print_word::w#11 w zp ZP_WORD:6 4.0
(word) print_word::w#2 w zp ZP_WORD:6 4.0
(word) print_word::w#3 w zp ZP_WORD:6 4.0
(word) print_word::w#4 w zp ZP_WORD:6 4.0
(word) print_word::w#5 w zp ZP_WORD:6 4.666666666666666
(word~) print_word::w#9 w zp ZP_WORD:6 4.0
(signed word()) signed_multiply((signed byte) signed_multiply::a , (signed byte) signed_multiply::b)
(byte~) signed_multiply::$12 reg byte a 4.0
(byte/signed byte/word/signed word~) signed_multiply::$16 reg byte a 4.0
@ -354,7 +354,7 @@
zp ZP_BYTE:2 [ signed_multiply_results_compare::a#6 signed_multiply_results_compare::a#1 multiply_results_compare::a#6 multiply_results_compare::a#1 init_multiply::x_2#3 init_multiply::x_2#2 init_multiply::x_2#1 init_multiply::dir#2 init_multiply::dir#3 slow_signed_multiply::a#0 signed_multiply_error::b#0 slow_multiply::a#0 multiply_error::b#0 ]
zp ZP_BYTE:3 [ signed_multiply_results_compare::b#2 signed_multiply_results_compare::b#1 multiply_results_compare::b#2 multiply_results_compare::b#1 signed_multiply::b#0 ]
zp ZP_WORD:4 [ line_cursor#20 line_cursor#40 line_cursor#27 line_cursor#1 multiply_tables_compare::kc_sqr#2 multiply_tables_compare::kc_sqr#1 init_multiply::sqr1_lo#2 init_multiply::sqr1_lo#1 init_multiply::sqr2_lo#2 init_multiply::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 multiply::return#3 multiply_results_compare::ma#0 ]
zp ZP_WORD:6 [ print_str::str#14 print_str::str#16 print_str::str#0 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#9 print_word::w#10 print_word::w#11 signed_multiply::m#4 signed_multiply::m#5 signed_multiply::m#1 signed_multiply::m#0 signed_multiply::m#2 slow_signed_multiply::m#5 slow_signed_multiply::return#0 slow_signed_multiply::m#3 slow_signed_multiply::m#1 slow_signed_multiply::m#2 slow_multiply::return#0 slow_multiply::m#3 slow_multiply::m#1 init_multiply::sqr1_hi#2 init_multiply::sqr1_hi#1 init_multiply::sqr2_hi#2 init_multiply::sqr2_hi#1 slow_signed_multiply::return#2 signed_multiply::return#2 signed_multiply_results_compare::ma#0 multiply::return#2 multiply::return#0 slow_multiply::return#2 multiply::return#3 multiply_results_compare::ma#0 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:8 [ char_cursor#75 char_cursor#124 char_cursor#123 char_cursor#119 char_cursor#135 char_cursor#27 char_cursor#118 char_cursor#17 char_cursor#117 char_cursor#172 char_cursor#176 char_cursor#1 char_cursor#121 char_cursor#197 init_multiply::sqr#3 init_multiply::sqr#4 init_multiply::sqr#1 init_multiply::sqr#2 signed_multiply_results_compare::ms#0 ]

View File

@ -8,9 +8,8 @@ main: {
.const bgcol = $d021
.const w = b*$100+0
.const w2 = 1*$100+1+w+0*$100+0
.const sc = w2
lda bs+1
sta sc
sta w2
lda pos
cmp #'m'
bne b1

View File

@ -8,7 +8,7 @@
@end: scope:[] from @1
[3] phi() [ ] ( )
main: scope:[main] from @1
[4] *((const byte*) main::sc#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] )
[4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] )
[5] if(*((const byte*) main::pos#0)!=(byte) 'm') goto main::@1 [ ] ( main:2 [ ] )
to:main::@3
main::@3: scope:[main] from main

View File

@ -194,6 +194,8 @@ Fixing word constructor with main::$4 ← main::b#0 w= 0
Fixing word constructor with main::$5 ← 1 w= 1
Fixing word constructor with main::$6 ← 0 w= 0
Succesful SSA optimization Pass2FixWordConstructors
Eliminating Noop Cast (byte*) main::sc#0 ← ((byte*)) (word) main::w2#0
Succesful SSA optimization Pass2NopCastElimination
Alias (word) main::w#0 = (word~) main::$4
Succesful SSA optimization Pass2AliasElimination
Constant (const word) main::w#0 = main::b#0*256+0
@ -204,8 +206,6 @@ Constant (const word) main::$0 = main::$5+main::w#0
Succesful SSA optimization Pass2ConstantIdentification
Constant (const word) main::w2#0 = main::$0+main::$6
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::sc#0 = ((byte*))main::w2#0
Succesful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH
Constant inlined main::$5 = (byte/signed byte/word/signed word) 1*(word/signed word) 256+(byte/signed byte/word/signed word) 1
Constant inlined main::$6 = (byte/signed byte/word/signed word) 0*(word/signed word) 256+(byte/signed byte/word/signed word) 0
@ -239,7 +239,7 @@ FINAL CONTROL FLOW GRAPH
@end: scope:[] from @1
[3] phi() [ ] ( )
main: scope:[main] from @1
[4] *((const byte*) main::sc#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] )
[4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] )
[5] if(*((const byte*) main::pos#0)!=(byte) 'm') goto main::@1 [ ] ( main:2 [ ] )
to:main::@3
main::@3: scope:[main] from main
@ -308,10 +308,9 @@ main: {
.const bgcol = $d021
.const w = b*$100+0
.const w2 = 1*$100+1+w+0*$100+0
.const sc = w2
//SEG9 [4] *((const byte*) main::sc#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2
//SEG9 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2
lda bs+1
sta sc
sta w2
//SEG10 [5] if(*((const byte*) main::pos#0)!=(byte) 'm') goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
lda pos
cmp #'m'
@ -337,7 +336,7 @@ main: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::sc#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] if(*((const byte*) main::pos#0)!=(byte) 'm') goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [8] *((const byte*) main::bgcol#0) ← (byte/signed byte/word/signed word) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -376,10 +375,9 @@ main: {
.const bgcol = $d021
.const w = b*$100+0
.const w2 = 1*$100+1+w+0*$100+0
.const sc = w2
//SEG9 [4] *((const byte*) main::sc#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2
//SEG9 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2
lda bs+1
sta sc
sta w2
//SEG10 [5] if(*((const byte*) main::pos#0)!=(byte) 'm') goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
lda pos
cmp #'m'
@ -436,7 +434,6 @@ FINAL SYMBOL TABLE
(byte*) main::pos
(const byte*) main::pos#0 pos = ((byte*))(word/signed word) 1281
(byte*) main::sc
(const byte*) main::sc#0 sc = ((byte*))(const word) main::w2#0
(word) main::w
(const word) main::w#0 w = (const byte) main::b#0*(word/signed word) 256+(byte/signed byte/word/signed word) 0
(word) main::w2
@ -466,10 +463,9 @@ main: {
.const bgcol = $d021
.const w = b*$100+0
.const w2 = 1*$100+1+w+0*$100+0
.const sc = w2
//SEG9 [4] *((const byte*) main::sc#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2
//SEG9 [4] *((byte*)(const word) main::w2#0) ← *((const byte[]) main::bs#0+(byte/signed byte/word/signed word) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2
lda bs+1
sta sc
sta w2
//SEG10 [5] if(*((const byte*) main::pos#0)!=(byte) 'm') goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
lda pos
cmp #'m'

View File

@ -14,7 +14,6 @@
(byte*) main::pos
(const byte*) main::pos#0 pos = ((byte*))(word/signed word) 1281
(byte*) main::sc
(const byte*) main::sc#0 sc = ((byte*))(const word) main::w2#0
(word) main::w
(const word) main::w#0 w = (const byte) main::b#0*(word/signed word) 256+(byte/signed byte/word/signed word) 0
(word) main::w2